C语言可以在不同的源文件中定义相同名字的全局变量吗

不加static,这样编译会通过吗

不使用static的时候,两个不同的源文件都可以正常编译,但会出现链接错误,原因是有两个地方存在相同的变量,导致编译器无法识别应该使用哪一个。
另外,而使用static的时候,你所定义的static变量如果是局部的话,编译的时候编译器会将其重新命名,其他文件就不会使用到这个文件的static变量了,这样就使得只在本文件内有效;如果是全局的话,就全局可见,共享同一块内存空间。
具体细节请参考《C++反汇编与逆向分析》(钱林松),里面讲的很详细。
如有疑问可以追加问题,欢迎采纳,谢谢!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-07
拿vc试啊,刚花了几分钟实测了下,不加static,不管是否初始化,都是在链接的时候报重定义错误,如果加了static, 不管是否初始化,编译链接都没问题,只是不同的源文件占用不同的内存,也就是说已经是两个不同的static全局变量了。
第2个回答  2013-07-26
可以,因这个不是语法错误,一般是逻辑错误!而这种错误是看编程人员要怎么使用变量的!
第3个回答  2013-07-23
编译会通过
链接会失败
第4个回答  2013-08-03
可以啊!直接添加变量即可。
相似回答