• 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发

一个关于常量数组引用的问题

R_W 2014-01-27 11:52:52
建立了两个源文件main.c & a.c
在main.c中初始化一个常量数组const int code[3] = {1,2,3};在a.c中引用,问题来了。
如果a.c的代码这样写:
extern const int code[];
void print(void)
{
printf("%d",code[1]);
}
在main.c的main函数中调用print()编译器会报错:

error LNK2001: 无法解析的外部符号 "int const * const code" (?code@@3QBHB)

但是如果print函数这样写就没问题==!
void print(const int code[])
{
printf("%d",code[1]);
}
我的问题是:既然在a.c中extern了这个全局常量数组,为什么在main函数中调用print函数会报错呢?
...全文
94 点赞 收藏 4
写回复
4 条回复
打酱油_不要分 2014年02月03日
回复 点赞
R_W 2014年01月29日
谢谢楼上两位:放头文件确实通过了,原因也知道了;编译器这块不大懂,既然GNU能通过那就ok啦。
回复 点赞
珍惜生命远离CPP 2014年01月28日
const 变量 是内部链接,只在当前文件有效.引用不了其他文件的const变量 直接放头文件吧
回复 点赞
bobo_包子 2014年01月28日
引用 1 楼 akirya 的回复:
const 变量 是内部链接,只在当前文件有效.引用不了其他文件的const变量 直接放头文件吧
No, I can compile in GNU.
引用 楼主 u013372777 的回复:
建立了两个源文件main.c & a.c 在main.c中初始化一个常量数组const int code[3] = {1,2,3};在a.c中引用,问题来了。 如果a.c的代码这样写: extern const int code[]; void print(void) { printf("%d",code[1]); } 在main.c的main函数中调用print()编译器会报错: error LNK2001: 无法解析的外部符号 "int const * const code" (?code@@3QBHB) 但是如果print函数这样写就没问题==! void print(const int code[]) { printf("%d",code[1]); } 我的问题是:既然在a.c中extern了这个全局常量数组,为什么在main函数中调用print函数会报错呢?
You should try GNU
回复 点赞
发动态
发帖子
C++ Builder
创建于2007-08-02

2567

社区成员

10.2w+

社区内容

C++ Builder相关内容讨论区
社区公告
暂无公告