介绍一下Extern “C”,它的作用是什么?
2016-03-15 10:21
281 查看
Extern “C”是由C++提供的一个连接交换指定符号,用于告诉C++这段代码是C函数。这是因为C++编译后库中函数名会变得很长,与C生成的不一致,造成C++不能直接调用C函数,加上extren “c”后,C++就能直接调用C函数了。
lExtern “C”主要使用正规DLL函数的引用和导出 和 在C++包含C函数或C头文件时使用。使用时在前面加上extern “c” 关键字即可
lextern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记住,下列语句:
extern int a;
l 仅仅是一个变量的声明,其并不是在定义变量a,并未为a分配内存空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现连接错误。
通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块A编译生成的目标代码中找到此函数。
lExtern “C”主要使用正规DLL函数的引用和导出 和 在C++包含C函数或C头文件时使用。使用时在前面加上extern “c” 关键字即可
lextern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记住,下列语句:
extern int a;
l 仅仅是一个变量的声明,其并不是在定义变量a,并未为a分配内存空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现连接错误。
通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块A编译生成的目标代码中找到此函数。
相关文章推荐
- Cocos2d-x 3.1.1 学习日志5--cocos2d-x3.1.1打飞机的实现
- Linux学习3之shell的if大小比对使用
- keytool查看已打包apk的签名
- shell脚本实现nginx开机自启
- iOS UIEvent事件及UIResponder响应者
- Red Hat 6.5 编译安装Mysql 5.7.11
- Android6.0的phone应用源码分析(9)——UICC卡管理
- c++利用socket将url解析成IP(gethostnbyname())
- Android Volley解析(一)之GET、POST请求篇
- centsos 使用命令行发送邮件
- 高性能apache服务器配置大并发教程MPM模块配置
- python 微信机器人之图灵
- Ubuntu15.10中搜狗输入法的安装使用
- JS中数组Array的用法
- 敏捷开发实际运用
- てもともとだ
- configure/make/make install的作用
- 8个超炫酷仿HTML5动画源码
- MVP初级整理
- hdoj 1799 循环多少次?(数学公式)