[C语言]防止头文件和全局变量重复定义
2017-04-18 14:10
127 查看
昨天下午将全局变量定义在H文件中导致链接时提示变量在多个obj文件内重复。
解决办法如下:
将变量移入C文件中进行定义,然后在H文件中加入extern在变量之前。
这样当其它C文件引用该全局变量时就会去链接这个变量符号而不是重新生成。
另附防止H文件被重复包含的处理方法:
#ifndef _H文件名_H_
#define _H文件名_H_
//H文件内容
#endif
这个关键字真的比较可恶,在定义(函数)的时候,这个extern居然可以被省略,所以会让你搞不清楚到底是声明还是定义,下面分变量和函数两类来说:
尤其是对于变量来说。
extern int a;//声明一个全局变量a
int a; //定义一个全局变量a
extern int a =0 ;//定义一个全局变量a 并给初值。一旦给予赋值,一定是定义,定义才会分配存储空间。
int a =0;//定义一个全局变量a,并给初值,
声明之后你不能直接使用这个变量,需要定义之后才能使用。
第四个等于第三个,都是定义一个可以被外部使用的全局变量,并给初值。
糊涂了吧,他们看上去可真像。但是定义只能出现在一处。也就是说,不管是int a;还是int a=0;都只能出现一次,而那个extern int a可以出现很多次。
当你要引用一个全局变量的时候,你就要声明extern int a;这时候extern不能省略,因为省略了,就变成int a;这是一个定义,不是声明。
相关文章推荐
- [C语言]防止头文件和全局变量重复定义
- [C语言项目]防止头文件和全局变量重复定义
- 防止头文件和全局变量重复定义
- 补习C语言之在.h文件中定义全局变量
- 防止全局变量重复定义
- 防止 c 头文件以嵌套包含及变量重复定义
- 【转载】防止变量重复定义、头文件重复包含、嵌套包含
- 防止头文件重复包含引起的变量重复定义
- extern 用法,全局变量与头文件(重复定义)
- C 防止 全局 变量 重复 定义 巧妙办法
- 【转载】防止变量重复定义、头文件重复包含、嵌套包含
- extern 用法,全局变量与头文件(重复定义)
- extern 用法,全局变量与头文件(重复定义){转}
- 详解keil采用C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法
- 防止变量重复定义、头文件重复包含、嵌套包含
- 详解keil采用C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法!
- 【转载】防止变量重复定义、头文件重复包含、嵌套包含
- extern 用法,全局变量与头文件(重复定义)
- extern用法,全局变量,全局函数与头文件(重复定义)
- 防止 c 头文件以嵌套包含及变量重复定义