我最近开始意识到,强烈建议使用“extern”关键字。因此,我开始怀疑是否有什么毛病电流(EXTERN少)的方式我使用头文件:在没有“extern”关键字的头文件中声明变量是否有任何缺点?
的main.c:
#include "main.h"
#include "function.h"
int main(void){
globalvariable = 0;
testfunction();
return 0;
}
main.h:
#ifndef MAIN_H_
#define MAIN_H_
int globalvariable;
#endif /* MAIN_H_ */
function.c:
#include "main.h"
#include "function.h"
void testfunction(){
globalvariable++;
return;
}
function.h:
#ifndef FUNCTION_H_
#define FUNCTION_H_
void testfunction(void);
#endif /* FUNCTION_H_ */
因此,每个需要访问全局变量的新源文件都只需要包含main.h。
这种方法的一个显而易见的缺点是数组:在声明数组后,不能使用{element0,element1,...}格式为数组赋值。
顺便说一下,当我给全局变量初始值为零,我在那个点上定义它?或者是先前分配的内存?
另外,我正在使用的方法有官方术语吗?
'extern'关键字没有被高度鼓励;你只能在绝对必须的时候才使用它(希望永远不会)。 – 2012-04-09 20:23:40
http://stackoverflow.com/questions/1433204/what-are-extern-variables-in-c – cnicutar 2012-04-09 20:24:20
[全局变量不好](http://c2.com/cgi/wiki?GlobalVariablesAreBad)。 – 2012-04-09 20:24:28