一般的做法都是在头文件(.h)中声明变量,然后在源文件(.c)中定义变量
如果在头文件中定义变量,这个变量就有了实体,如果a.c和b.c一起引用了头文件head.h,就等于同时创建了两个同样名字的变量实体,在一个工程下,链接的时候就会导致重定义的问题
如何在头文件中声明变量而不是定义呢 ?使用extern关键字,extern关键字表示当前变量在别处定义,需要链接到外面的文件才能找到具体的变量,只是在此声明,并不分配实质内存,如下:
#define HEAD_H_
#define HEAD_H_
extern int a;
#endif //HEAD_H
与extern相反的是static,
在源文件中使用的时候表示该变量只属于当前源文件,对外不可见,在头文件中使用的时候表示包含了此头文件的源文件都会生成一个对应的变量,对外不可见。