extern 用法

转载
用例子给你示范 
// 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的函数!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值