今天遇到一个问题, 问题原因是自己忘记里在C++里, const对象默认为文件的局部变量
在A文件里定义了一些变量,其中有g_pkg_buffer_size,
后来新增B文件,B文件中也要用到这些变量。 由于代码历史原因, 最好保持原来的代码不动(也就是说不把这些公用变量移到一个头文件), 于是这么写:
结果链接不过, 提示 undefined symbol: g_pkg_buffer_size
观察A文件编出来的.o,
发现就没有g_pkg_buffer_size这个全局符号, 难怪B会链接不过。 然后我在两台机器上做了一个简单的实验, 编译同一个简答的代码,代码只有如下一行
在第一台机器上:
在第二台机器上:
可见不同的编译器版本,const变量在符号表中的处理还不太一样。 看来我不能简单粗暴的把问题归咎于此。 然而可以肯定的是