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

一个关于常量数组引用的问题
建立了两个源文件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函数会报错呢?
------解决方案--------------------
const 变量 是内部链接,只在当前文件有效.引用不了其他文件的const变量
直接放头文件吧
------解决方案--------------------
引用:
const 变量 是内部链接,只在当前文件有效.引用:
建立了两个源文件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