全局变量的声明和定义
在a.c中,定义一个全局变量int c,在同一个工程中的b.c文件中同样定义int c,两个之前都没有加static,如果没有初始化赋值,编译OK,这样是不是相当于一个是定义另一个是声明?为什么不要加extern?如果两个都进行初始化,那编译过不去,提示重定义,这个意思是同样一个变量被定义了两次?
哎,之前一直觉得自己C基础很好,今天做了份笔试题,各种被虐,知其然不知其所以然。。。 全局变量
[解决办法]
Unix 编译器和连接器通常使用“通用模式” 允许多重定义, 只要保证最多对一处进行初始化就可以了; ANSI C 标准称这种行为为“公共扩展”。