导航:首页 > 源码编译 > 编译文件没有定义

编译文件没有定义

发布时间:2023-05-15 07:21:24

㈠ 已经包含了头文件,但编译提示未定义变量的一种情况分析

ipc_mem.c 文件中 引用了 定义有con_conf_t结构体的 con_conf_info.h 头文件,并且 ipc_mem.h 头文件中声明con_conf_t结构体变量,而 sample.c 引用了 头文件 ipc_mem.h 了,但是编译提示ipc_mem.h中未定义con_conf_t

所以,需要确认好别的文件中是否也需要包含相关头文件,如果是,光禅做在一个贺锋衡地方引用头文件是不够的。

如本次问题中基启,ipc_mem.c中会用到con_conf_t结构体,而sample.c中虽然不会用到con_conf_t结构体,但是sample.c中包含了ipc_mem.h,而ipc_mem.h中又声明了con_conf_t结构体变量,所以编译到sample.c文件时,由于看到ipc_mem.h声明了con_conf_t,但是编译器不止知道con_conf_t是哪里来的,所以会报错。

要解决这个问题,只需要在sample.c再引用con_conf_info.h头文件,再编译即可。

㈡ 明明定义参数了,为什么编译说没有定义

函数由两部分组成:声明部分和执行语句。声明部分的作用是对有关的标识符(如变量、函数、结构体、共用体等)的属性进行说明。对于函数,声明和定义的区别明显,函数的声明是函数的原型,而函数的定义是函数功能的确立。对函数的声明放在声明部分中,函数的定义不在函数的声明部分范围内,是一个文件中的独立模块。对变量而言,声明与定义的关系稍微复杂。声明部分出现的变量有两种情况:一种需要建立存储空间的(如inta;);一种不需要建立存储空间的(如externinta;)。前者称为定义性声明(definingdeclaration),简称为定义(definition)。后者称为引用性声明(referenceingdeclaration)。声明包括定义,并非所有的声明都是定义。对“inta;”而言,定义性声明,建立存储空间的声明称为定义,不需要建立存储空间的声明称为声明。指的声明是狭义的,即非定义性声明。例如:intmain(){externinta;//这是声明不是定义。声明a是一个已定义的外部变量}inta;//是定义,定义a为整型外部变量外部变量定义和外部变量声明的含义不同。外部变量的定义一次,位置在所有函数之外,而同一文件中的外部变量的声明可以有多次,位置可以在函数之内,也可在函数之外。系统根据外部变量的定义分配存储单元。对外部变量的初始化只能在定义时进行,而不能在声明中进行。所谓声明,作用是向编译系统发出一个信息,声明该变量是一个在后面定义的外部变量,提前引用该变量而作的声明。extern只用作声明,而不用于定义。static来声明一个变量的作用有二:对局部变量用static声明,变量在本函数调用结束后不释放,整个程序执行期间始终存在,使其存储期为程序的全过程。全局变量用static声明,变量的作用域只限于本文件模块(即被声明的文件中)。用auto,register,static声明变量时,定义变量的基础上加上关键字,不能单独使用。

㈢ 已添加的类,在编译时错误提示类没有定义,这是什么原因

具体睁尘需要看代码
比睁搏较常见的几个悉早祥原因
1 类定义在其它文件了,编译的时候没编进来
2 类定义有错 导致系统没识别到
3 在定义之前调用了该类。

㈣ 在头文件里定义的函数在编译时说未定义

void err_sys(const char *, ... );
这样只是声明了一下,没有对其定义,当然会报错,这个就相当于printf()的函数,只是它自己定义了一个新的,你去stdio.h头文件里看看printf()怎么定义的。

㈤ 编译不了这个,提示printf没有定义,该怎么办

(1)printf 定义在头文件桥李虚 stdio.h 里。
(2)void 函数 不需要敏燃 return 语句扰早。
(3) 要有主函数 main() , 不是 mian()
写成:
#include <stdio.h>
void add(int a,int b)
{
printf("data=%d\n",a+b);
}
void main()
{
add(3,4);
exit(0);
}

㈥ Linux下编写c语言头文件,编译时出现“函数未定义”

出现该错误的原因为编译时只变编译了源文件的一部分,故在链接时无法从编译好的目标代码中找到print函数,所以出错。


根据你的源文件结构,个人推荐先单独编译源文件为多个object文件,再统一链接。

方法如下

gcc-cmain.c#-c参数的作用是让gcc只编译,不链接
gcc-ctest.c
gcc-omainmain.otest.o#将编译好的目标代码链接

当然,以上是在gcc为编译器的前提下执行,如使用clang等其他编译器,方法类似(clang的调用方法与gcc高度兼容)

㈦ c编程中main函数中使用了库文件中定义的函数,编译时却提示该函数未定义,这是什么问题,坐等高手解答

原因:
头文件 pthread.h 没有包含态冲哗到判慧源文件中
解决方法:
1)将 pthread.h 复制到源文件相同的文件夹
2)修改为:帆行#include "pthread.h"

阅读全文

与编译文件没有定义相关的资料

热点内容
短信删除助手文件夹 浏览:688
java办公自动化 浏览:340
php中超链接 浏览:253
linux默认路由设置 浏览:36
linux如何挂载iso 浏览:432
vs程序换文件夹后不能编译 浏览:557
安卓源码编译输入脚本没反应 浏览:47
phpmysql自增 浏览:167
把ppt保存为pdf 浏览:533
汽车密封件加密配件 浏览:887
黑马程序员15天基础班 浏览:560
java调整格式 浏览:521
香港云服务器租用价 浏览:78
linuxsublime3 浏览:560
imac混合硬盘命令 浏览:278
沈阳用什么app租房车 浏览:857
00后高中生都用什么app 浏览:239
戴尔塔式服务器怎么打开独立显卡 浏览:807
医疗程序员招聘 浏览:598
住宿app可砍价是什么意思 浏览:133