extern关键字

extern关键字置于变量或函数前,用来标志变量或函数的定义在其它文件中,当编译器遇到被extern修饰的变量或函数时,会到其它文件寻找其定义。

1.extern 关键字与全局变量。

1.1在main.h中声明变量extern int a;

//main.h

extern int a;

在main.cpp中包含main.h头文件,就可以使用全局变量a.

//main.cpp

#include"main.h"

#include"iostream"

using namespace std;

int main()

{

int a;//在main.h中,extern int a是声明,不是定义,系统并未给变量a分配内存。所以,变量需要在外部定义。

cout<<a<<endl;

return 0;

}

1.2 在testc.cpp中定义变量b;

//test.cpp

int b=10;

在main.cpp中使用变量b

//mian.cpp

extern int b;

int main()

{

cout<<b<<endl;

return 0;

}


2.extern关键字与函数

在.h文件中,声明函数extern void fun(),在.c文件中实现void fun(),但是extern可以省略,一般不写。

3.extern “C”

extern "C"的主要功能是为了能够正确实现C++代码调用C语言代码。

因为cpp有函数重载机制,其对函数进行编译时,会对函数的返回值,函数名,形参类型,形参顺序,形参个数进行处理,比如在c++中,函数 void fun(int a,char b),被c++编译器编译后,可能为void_fun_int_char,而在C语言中,被c编译器编译后,可能为_fun。C语言与c++对函数的处理机制不同,如果,一段c的代码被c++编译,因为生成的函数名不同,会导致程序在链接阶段出错。

#ifdef __cplusplus//如果是c++编译器编译

exterc "C"//指定以下代码按照c语言的编译规则编译

{

#endif

//按照c语言的机制处理{}内的函数

#ifdef __cplusplus

}

#endif

#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值