博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ extern关键字
阅读量:4090 次
发布时间:2019-05-25

本文共 648 字,大约阅读时间需要 2 分钟。

转自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html

原作者:

基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。

      也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%$也可能是别的,这要看编译器的"脾气"了(不同的编译器采用的方法不一样),为什么这么做呢,因为C++支持函数的重载啊,在这里不去过多的论述这个问题,如果你有兴趣可以去网上搜索,相信你可以得到满意的解释!

    第二,当extern不与"C"在一起修饰变量或函数时,如在头文件中: extern int g_Int; 它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块活其他模块中使用,记住它是一个声明不是定义!也就是说B模块(编译单元)要是引用模块(编译单元)A中定义的全局变量或函数时,它只要包含A模块的头文件即可,在编译阶段,模块B虽然找不到该函数或变量,但它不会报错,它会在连接时从模块A生成的目标代码中找到此函数。

你可能感兴趣的文章
Guava学习
查看>>
调用函数时参数传递的单向性分析
查看>>
(五)ELK Logstash output
查看>>
js获取网页屏幕可见区域高度
查看>>
Centos7.5安装VirtualBox-5.2
查看>>
Extjs editor plugins
查看>>
Java List操作
查看>>
day16 常用模块 sys os json pickle
查看>>
Docker国内镜像source
查看>>
html——特例
查看>>
python-全局替换程序
查看>>
javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStat解决方案
查看>>
H5---null和undefined的区别?
查看>>
TDD,不要让测试TODO
查看>>
《CoderXiaoban》第八次团队作业:Alpha冲刺1
查看>>
js-DOM事件
查看>>
linux的运行级别
查看>>
SpringBoot
查看>>
[转]Makefile中使用$$的使用
查看>>
2018 牛客多校 9
查看>>