您的位置:首页 > 编程语言 > C语言/C++

c++中 extern 是什么含义

2014-05-06 20:35 169 查看
用例子给你示范

// 1.cpp

int x = 10;

// 2.cpp 注意没有包含1.cpp

#include <iostream>

using namespace std;

extern int x;

int main ()

{ cout << x << endl; }

//则输出10

两个文件同在一个项目(project)中,你不包含某个文件(cpp)而可以用它内部定义的变量,(里是.pp不是.h, 因为在.h中定义的数据不能在.cpp中用除非这个.cpp包含这个.h文件)

例:

// 1.h

#include <iostream>

void print()

{

std::cout << "hello!" << std::endl;

}

// 2.cpp

#include <iostream>

using namespace std;

// 以上两句在这个例子中可以不要

extern void print();

int main ()

{

print();

}

就会出错因为1.h中的void print();在不包含它的文件中是不可调用的,即使在声明了extern 也于事无补,如果你将这个例子中的1.h名字换成1.cpp就对了!

从这些可以看出来,extern在这里起的作用是告诉编译器,你这个print()已经在某个.cpp中已经定义了,这里只不过是声明一下有这个东西,然后拿来用一下。定义只能出现一次,声明却可出现多次,也就是说extern声明可在多个文件中用(包括.h)

还有,你还可以屏蔽extern声明,如第二个例子中的第二个.cpp文件可以改成

#include <iostream>

using namespace std;

// 这里以上两句不能省略,因为,这里extern void print();函数已经不起作用了,在这里调用的而是本文件中定义的void print()函数,其中用到了cout,endl;他们来源于std::<iostream>

extern void print();

void print()

{

cout << "world!" << endl;

}

int main ()

{

print();

}

// 输出结果为world!

还有一个extern "C"就不用说了,用这个可以允许C++程序中调用C的函数!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: