- 对于extern全局变量和函数,使用头文件来声明它们
- 在定义全局变量和函数的地方include头文件
- 在使用全局变量和函数的地方include头文件
注:声明和定义变量的区别在于,声明只是告知编译器一个变量存在,它的类型是什么,而没有为变量申请内存空间。定义变量代表它已经被实例化,这个变量有了内存空间。
example:
globalVar.h //全局变量声明处
extern int global_variable;
globalFun.h //全局函数声明处
extern int incrementGlobal(void);
varDef.c //全局变量定义处
#include "globalVar.h"
int global_variable = 0; // 变量定义要放在函数外,是全局范围的定义
varUsing.c //全局变量使用处
#include "globalVar.h"
printf("Global Variable: %d\n", global_variable);
funDef.c //全局函数定义处
#include "globalFun.h"
int incrementGlobal(void) {
return ++global_variable;
}
funUsing.c //全局函数的使用处
#include "globalFun.h"
printf("Increment Global: %d\n", incrementGlobal());
指导原则:
1.永远把extern变量和函数声明在头文件中,不要把它们放在源文件里,保持一处声明原则;
2.不要忘记在定义extern变量和函数处include它们的头文件;
3.不要忘记在使用extern变量和函数处include它们的头文件;
4.不要忘记头文件全局变量之前的extern关键字,否则多个源文件include该头文件后,会多次创建这个变量。