有以下几个文件:
global.cpp:
int test = 5;
global.h
extern int test;
extern.h
include "global.h"
void test_fun();
extern.cpp
#include<stdio.h>
#include "extern.h"
void test_fun()
{
printf("%d\n", test);
}
main.cpp
#include "extern.h"
int main(int argc, char *argv[])
{
test_fun();
return 0;
}
上面的代码运行起来是没有问题的,但是,当我把global.cpp和global.h里面的int改成const int类型之后就会报下面的错误:
error LNK2001: unresolved external symbol "int const test"
请问const int 和 int 在extern下作用的区别是什么,为什么第二种情况会报错?
更新: 这个问题只会出现在C++里面,在C里面能正确的运行。
擦第一次有人邀请我回答问题
但是为什么会是我不很熟悉的 c++ ……
当看到LZ提的问题的时候我还不太信真会这样,换了几个编译器试,发现还真是会报错
然后就找到了
http://stackoverflow.com/questions/14894698/why-does-extern-const-int-n-not-work-as-expected