c++中extern const连用的问题
c++中extern const连用的问题
下面的程序在C语言下,没问题。但在C++中则编译不通过(编译器:MinGW gcc & VS2008),可能其它的编译器可以编译成功,或者有编译选项可以设置。
文件a.cpp(或是a.c) 中
const int i = 123; //
...
文件main.cpp(或是main.c) 中
extern const int i;
int main()
{
//当在这里使用i的时候,C++就会编译出错.
}
我网络收集的结论是:http://blog.csdn.net/johnphan/article/details/7333961
[解决办法]
C++中const变量定义时,若未加extern限定,则默认是内部链接的
[解决办法]
建议这样修改:
- C/C++ code
//文件a.h中extern const int i;//文件a.cpp 中#include"a.h"const int i = 123;...文件main.cpp(或是main.c) 中#include"a.h"
[解决办法]
是编译不成功还是链接不成功?
[解决办法]
C++ Primer 中有说明,const 变量默认的作用域是本地。
在 a.cpp 中定义 i 时加上 extern 就行
extern const int i = 123;
[解决办法]
文件a.cpp文件中
const const int i = 123;
前面加extern.
C++PRIMER中写到:
与其他变量不同,除非特别说明,在全局作用域声明的const变量是定义该对象的文件的局部变量。此变量只存在于那个文件中,不能被其他文件访问。
通过指定const变量为extern,就可以在整个程序中访问const对象。
[解决办法]
非const变量默认为extern ,而const 不是,
所以要使const 变量在其它文件k中也可以访问 ,必需显示的声明为extern