Xiao_bird博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

最近写代码,想导一个const全局变量 ,于是在头文件中:

extern const unsigned int MyVar;

 

在实现文件中:

const unsigned int MyVar = 10;

 

可是在链接时,其它文件中对MyVar的引用都报了找不到符号的错误,检查了半天,发现去掉MyVar的const修饰就可以。百思不得其解,只能请google来帮忙,于是才发现:原来C++中被const修饰的全局变量默认只在文件内可见!我说用readelf -s找不到目标文件中的MyVar变量呢!

 

解决办法:在实现文件中修改如下:

extern const unsigned int MyVar = 10;

即指定导出MyVar,这样编译就顺利通过了。

posted on 2010-05-26 17:42  Xiao_bird  阅读(3968)  评论(1编辑  收藏  举报