首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++中extern const连用的有关问题

2012-03-23 
c++中extern const连用的问题c++中extern const连用的问题下面的程序在C语言下,没问题。但在C++中则编译不

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

热点排行