头文件为什么不能重复-头文件重复包含的危害
本篇文章给大家分享头文件为什么不能重复,以及头文件重复包含的危害对应的知识点,希望对各位有所帮助。
文章信息一览:
C++头文件重复包含
当1个C语言程序由 多个 源程序文件 组成时,由于每个 源程序文件 都有 #include ... include ...h, 最终它们可能形成交叉 包含 和 重复包含 现象 而造成错误。为了避免这种情况发生,可以 ***用 定义宏 的方法 把各个头文件 包起来。
是为了避免同一个文件被include多次使用, #pragma once(比较常用)这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次#pragma once用来防止某个头文件被多次include,#ifndef,#define,#endif用来防止某个宏被多次定义。
假定有以下几个头文件及其包含关系为:Fileh,fileh,fileh,fileh,fileh,main.cpp那么:fileh包含fileh,fileh,fileh包含fileh,fileh,fileh包含fileh,fileh。如许就会导致在file5中对file1和file2的反复包含,编译时就会报错。
ifndef identifier_h define identifier_h ...endif 这套条件编译是为了防止同一个.c文件中包含多个相同.***件的(比如有一个.c文件包含了a.h,a.h又包含了b.h,那么当你在这个.c文件中同时包含了a.h和b.h时,因为有上面的条件编译的关系而不会出错)。
定义头文件时,C++变量重复定义
1、记住,尽量不要在.c/.cpp文件中定义变量,而只能是声明变量。即将如下两句放在windowinit.cpp中。/* variables */ int width = 640;int height = 480;在windowinit.h中声明这两个变量:/* variables */ extern int width;extern int height;然后就不会重定义了。
2、在编译代码时如果出现以下错误提醒说明已经犯错了。错误类型:error:LNK2005 。打开程序代码可以看到在ini.h头文件中定义了如下全局变量。在其他代码文件(如Main.cpp)中再次引用ini.h头文件时就会再次定义ini.h中的那些全局变量。这样就造成了变量的重复定义。
3、那么就表示你两个.c文件中,每个.c文件中都有这样的全局变量定义:int a, b, c;当每个.c文件单独编译当然没有问题,但是当它们链接起来的时候就出现问题了:两个.c文件中都有变量a b c,所以当然是重复定义啊。问题是出在链接的时候的。
4、在头文件中定义全局变量,等同于在每个引用该头文件的源文件中都定义了一次全局变量,所以会报重复定义。
关于自定义头文件在多个文件中引用时提示重复定义的问题(C语言)_百度...
那么就表示你两个.c文件中,每个.c文件中都有这样的全局变量定义:int a, b, c;当每个.c文件单独编译当然没有问题,但是当它们链接起来的时候就出现问题了:两个.c文件中都有变量a b c,所以当然是重复定义啊。问题是出在链接的时候的。
C语言头文件中一般只进行函数声明,函数实现一般另写在文件中,这样引用头文件就不会报重复定义了。
重复定义是指编译时同一个定义多次给出或者连接时出现多个外部符号(外部函数和全局变量在不同实现文件中重复定义)。ifndef...#pragma once这些指令是用于防止同一个头文件在同一个实现文件中多次包含,这只能解决第一种冲突。你的问题可能是函数或者全局变量的定义在整个程序中重复了。
关于头文件为什么不能重复,以及头文件重复包含的危害的相关信息分享结束,感谢你的耐心阅读,希望对你有所帮助。
-
上一篇
全运会志愿者有什么用-全运会志愿者都干嘛 -
下一篇
院士有什么用-有院士的专业