关于头文件中声明变量
来源:互联网 发布:淘宝店铺模板图片 编辑:程序博客网 时间:2024/04/28 17:30
#ifndef _TEST_H_
#define _TEST_H_
int i = 10;
#define _TEST_H_
int i = 10;
#endif
想当然觉得这个是不会又问题了,加了条件编译了嘛。事实上链接时候就会出现重复定义错误。
如果只是int i;则在linux,gcc下不会报错,因为这被认为是一个声明。
C/C++的编译模式是单文件编译的,即TestHead1.c和TestHead2.c会分别编译,这两个文件分别编译的时候,其实都不存在_TEST_H_,因此两者都定义了int i = 10,造成重复定义。
由于工程中的每个.c文件都是独立的解释的,即使头文件有
#ifndef _TEST_H_
#define _TEST_H_
....
#enfif
在其他文件中只要包含了test.h就会独立的解释,然后每个.c文件生成独立的标示符。在编译器链接时,就会将工程中所有的符号整合在一起,由于文件中有重名变量,于是就出现了重复定义的错误。
解决方法大家都知道了,就.c中定义int i= 10;.h中声明 extern int i;
总结,头文件中只声明,千万不要有定义。
未完待续,等研究函数和类型定义
- 关于头文件中声明变量
- 关于 keil c51 头文件中变量名声明问题
- 关于在头文件中 声明 变量的研究
- 头文件中定义变量和声明变量的方法
- 关于头文件变量的声明和定义
- 头文件重复声明,变量重复声明
- 在头文件中定义或声明变量
- 关于在头文件中定义变量
- 头文件中只能声明变量不能定义变量 而声明变量必须带extern,为什么头文件中变量的声明都没有加
- 学习笔记:关于头文件中定义静态变量
- 关于dll头文件宏声明
- 在类的头文件中声明成员变量和成员函数。
- C++ 在头文件中声明定义字符数组或指针变量
- oc 关于头文件声明 与前向声明
- 头文件中定义变量
- 头文件中定义变量
- python中头文件的声明
- 关于前置声明与C++中头文件相互包含的几点问题
- 总结
- GDB用法详解
- 如何选择一个适合的工作流平台
- vc++中如何实现类似fences软件中的栅栏桌面
- MeeGo源码全分析:MeeGo体系架构[图文教程]
- 关于头文件中声明变量
- 也说ExecuteScalar和ExecuteNonQuery
- 分享下转换成大写money
- count字符数
- 浅谈 IE兼容模式
- android笔记,android程序设置标题栏和信息栏
- 笔记
- 文件I/O需要注意的几点...
- jstl <c:forEach> 学习