C++ - extern const的问题

本文介绍了在C++编程中遇到的一个问题,即const对象默认作为文件局部变量导致的链接错误。通过实验发现不同编译器版本对此处理可能不同。解决办法是在需要访问const变量的文件中使用extern关键字,使得const对象成为全局可访问的。详细讨论了const对象的存储和访问特性。
摘要由CSDN通过智能技术生成

今天遇到一个问题, 问题原因是自己忘记里在C++里, const对象默认为文件的局部变量

在A文件里定义了一些变量,其中有g_pkg_buffer_size,


后来新增B文件,B文件中也要用到这些变量。 由于代码历史原因, 最好保持原来的代码不动(也就是说不把这些公用变量移到一个头文件), 于是这么写:


结果链接不过, 提示 undefined symbol: g_pkg_buffer_size


观察A文件编出来的.o, 


发现就没有g_pkg_buffer_size这个全局符号, 难怪B会链接不过。 然后我在两台机器上做了一个简单的实验, 编译同一个简答的代码,代码只有如下一行


在第一台机器上:


在第二台机器上:


可见不同的编译器版本,const变量在符号表中的处理还不太一样。 看来我不能简单粗暴的把问题归咎于此。 然而可以肯定的是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值