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