各位好,今天在别人博客上看到个问题,我想了一下没想出来。求教: test.cpp:
int foo = 555;
const int array_test[5] = {1,2,3,4,5};
main.cpp:
#include <iostream>
extern int a;
extern const int array_test[5];
int main(void)
{
std::cout<<a<<std::endl;
std::cout<<array_test[0]<<std::endl;
}
这里这样写a可以访问,但array_test显示未定义。需要在 test.cpp 中的const int array_test[5] = {1,2,3,4,5};前加上extern才可以。那么这是为什么呢?a不需要加extern,array_test需要加,而且将array_test定义里的const去掉,那么不加extern也是可以的。