g++中extern关键字的疑问

0153 2011-08-31 06:28:56
我在a.cpp中定义了一个全局量:
const char g_szErrMsg[] = {"error input\n"};

在b.cpp中做以下声明:
extern const char g_szErrMsg[];
然后再在函数里使用g_szErrMsg,但编译时g++报告说函数里找不到g_szErrMsg

奇怪的是把两边的const都删掉是可以编译通过的,不知是何原因?
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 baihacker 的回复:]
因为const会默认让g_szErrMsg具有内部链接属性。
所以定义处要用:
extern const char g_szErrMsg[] = {"error input\n"};

要注意的是在C语言中const不是默认内部链接属性的,因此不用加。
[/Quote]

++
ericming200409 2011-08-31
  • 打赏
  • 举报
回复
原来c++的const还有这一出
0153 2011-08-31
  • 打赏
  • 举报
回复
谢谢,因为VC和gcc用得多,以前一直没注意,没想到g++是这样的。
baihacker 2011-08-31
  • 打赏
  • 举报
回复
因为const会默认让g_szErrMsg具有内部链接属性。
所以定义处要用:
extern const char g_szErrMsg[] = {"error input\n"};

要注意的是在C语言中const不是默认内部链接属性的,因此不用加。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧