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

不加static,这样编译会通过吗... 不加static,这样编译会通过吗 展开
 我来答
bd_is_s_b
推荐于2017-11-25 · TA获得超过487个赞
知道小有建树答主
回答量:64
采纳率:0%
帮助的人:74.5万
展开全部
不使用static的时候,两个不同的源文件都可以正常编译,但会出现链接错误,原因是有两个地方存在相同的变量,导致编译器无法识别应该使用哪一个。
另外,而使用static的时候,你所定义的static变量如果是局部的话,编译的时候编译器会将其重新命名,其他文件就不会使用到这个文件的static变量了,这样就使得只在本文件内有效;如果是全局的话,就全局可见,共享同一块内存空间。
具体细节请参考《C++反汇编与逆向分析》(钱林松),里面讲的很详细。
如有疑问可以追加问题,欢迎采纳,谢谢!
山东路云
2018-11-07
知道答主
回答量:15
采纳率:0%
帮助的人:1.4万
展开全部
拿vc试啊,刚花了几分钟实测了下,不加static,不管是否初始化,都是在链接的时候报重定义错误,如果加了static, 不管是否初始化,编译链接都没问题,只是不同的源文件占用不同的内存,也就是说已经是两个不同的static全局变量了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d95e1d110
2013-07-26
知道答主
回答量:7
采纳率:0%
帮助的人:9998
展开全部
可以,因这个不是语法错误,一般是逻辑错误!而这种错误是看编程人员要怎么使用变量的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
空雪梦见
2013-07-23 · TA获得超过5596个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1151万
展开全部
编译会通过
链接会失败
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水饭S
2013-08-03 · 超过22用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:61.9万
展开全部
可以啊!直接添加变量即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式