extern的作用

1、声明外部的变量

      由于编译是对单个的文件进行编译,所以在编译一个a.cpp文件的时候,若是要在a.cpp中使用b.cpp中的变量,直接使用则编译肯定会报错的,所以这个时候应该永extern修饰在a.cpp中所使用的b.cpp中的变量,这个时候编译器会忽略这个错误,直到链接的时候("将文件融为一体")会找到b.cpp中的变量,这样便ok了。extern的作用相当于让编译器在编译阶段忽略这个错误

//a.cpp

extern int a;   //并未分配空间,只是通知编译器,在其它文件定义过

printf("%d",a);

 

//b.cpp

int a = 9;

 

2、在C++文件中另一个C++文件中的函数

和第一点是一样的,a.cpp中调用b.cpp中的函数,需要在a.cpp中申明函数是extern的

3、在C++文件中调用C方式编译的函数

主要原因是C++在编译后生成的函数名和C的函数名不一样的,需要有一个转化过程,在C++中通过extern "C"修饰函数,可以表明这个函数是C编译的,命名规则就符合C。

//a.cpp   C++编译

extern "C"     //不加会报错,提示找不到该函数
{
    void print();
}

void main()

{

  print();

}

 

//b.cpp   C编译

void print()

{

    printf("123456");

}
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值