C连接交换指定符号extern “C”
2015-11-13 10:47
183 查看
假设某个C函数的声明如下:
该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字用来支持函数重载和类型安全连接。由于编译后的名字不同,C++程序不能直接调用C函数。C++提供了一个C连接交换指定符号extern“C”来解决这个问题。例如:
这就告诉C++编译译器,函数foo是个C连接,应该到库中找名字_foo而不是找_foo_int_int。C++编译器开发商已经对C标准库的头文件作了extern“C”处理,所以我们可以用#include 直接引用这些头文件。
void foo(int x, int y);
该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字用来支持函数重载和类型安全连接。由于编译后的名字不同,C++程序不能直接调用C函数。C++提供了一个C连接交换指定符号extern“C”来解决这个问题。例如:
extern “C” { void foo(int x, int y); … // 其它函数 } 或者写成 extern “C” { #include “myheader.h” … // 其它C头文件 }
这就告诉C++编译译器,函数foo是个C连接,应该到库中找名字_foo而不是找_foo_int_int。C++编译器开发商已经对C标准库的头文件作了extern“C”处理,所以我们可以用#include 直接引用这些头文件。
相关文章推荐
- mysql密码的加密与解密
- 使用Spark读写CSV格式文件(转)
- 【转】ios开发之AppDelegate
- SAP ERP Financials and FICO Handbook PDF 电子版
- C# this.Invoke()的作用与用法
- 对javscript中0,false,空字符串,null,undefied,字符串0的总结
- 软工文档总结
- iOS7适配
- AlertDialog的使用
- win7中将文件拷贝到虚拟机linux下的方法
- Oracle之索引的创建方式
- 3D效果
- SAP_Press-Configuring Controlling in SAP ERP_PDF 电子版
- Android Studio常用快捷键-mac版
- 设计模式 -- 单例模式(Singleton)
- 数据库设计の表分区
- linux:SUID、SGID详解
- 理解JavaScript的作用域链
- insert into,update,delete
- 设计模式-适配器模式