c中,一个文件里局部变量可以和全局变量重名。那这个文件编译出来的.o中,这两个变量的符号是怎么表示的呢?不可能符号是相同的呀!c++处理这种情况时,符号表示和c一样还是不同呢?
在同一个.o文件里不存在链接性的问题,怎么名应该就无所谓了。对于全局变量跟局部变量,我觉得放的位置都差那么多,随便加个前缀就区分开了,还有局部变量可能一开始声明的时候就被替换成地址了,编译生成的符号表里是没有局部变量的(符号表是用来两个或以上的.o文件重新链接定位时用的,因为局部变量根本不能被其他文件链接!)C++不同的编译器所对于同样的函数会生产不一样的符号(这样是为什么能重载函数),所以不同C++编译器出的.o文件是不能互相链接的,符号会出错。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。