Mix C and C++
来源:互联网 发布:拖延症 知乎 编辑:程序博客网 时间:2024/06/07 13:24
混合使用指南
https://isocpp.org/wiki/faq/mixing-c-and-cpp
关于如何使用C和C++进行混合编程,上面的引文总结的非常全面。问题的关键在于C++编译器编译出来的函数的名称与C编译器所使用的规则是不同的(对于重载函数,我们使用时的名字是一样的,但是编译器编译出来的名字却是不同的)。如果想让使用C++编译器(如g++)编译出的函数能够让C编译器认识,我们需要告诉C++编译器函数名要使用C编译器的规则,方法是使用extern "c"
。通常为了使一个头文件更加通用,会这么写:
#ifndef HEADER_GUARDER_#define HEADER_GUARDER_#ifdef __cplusplusextern "C" {#endifvoid Foo();void Bar();#ifdef __cplusplus}#endif#endif
如果使用了c++编译器,那么头文件自动包含extern "c"
(因为c++编译器会定义宏__cplusplus),那么编译器会生成符合C语言规范的函数名。
混合方式:C++做成静态链接库,暴露一个头文件给C使用
我们将使用库的一方称为客户。那么这种方式,客户只能使用c++编译器编译,因为一些c++标准库gcc是找不到的。所以不推荐这种方式。
混合方式:C++做成动态链接库,暴露一个头文件给C使用
http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html
做成动态链接库libfoo.so, 客户使用该so时可以使用c编译器编译。因为标准库依赖的问题由动态链接库机制自动解决了,很方便。
0 0
- Mix C and C++
- How to mix C and C++
- HOW TO MIX C AND C++
- How to mix C and C++
- [Linux]How to mix C and C++ 混合编译
- java.sql.SQLException: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,C
- experiment : C mix ASM on x64 r0
- experiment : C mix MASM on x86 r3
- C++/C# 混合编程 (Mix code C++/C#)
- 【转贴】C++/C# 混合编程 (Mix code C++/C#)
- Mix C Cpp (C和C++混合编程)
- mix QML and C++
- POJ2004-Mix and Build
- Mix ANSI C & Asm Part-1 Transform between MASM & AS
- '&' and '*' (C++)?
- Mix ANSI C & Asm Part-2 Using MS C/C++ & MASM
- Mix and Build(简单DP)
- c++and c read test
- WPF/WinForm在线程中调用提示窗MessageBox阻塞窗口方法
- 1272: [BeiJingWc2008]Gate Of Babylon
- av_opt_set函数族详解
- poj The Suspects(并查集)
- a++与++a及a--和--a的区别
- Mix C and C++
- IIR滤波器间接设计
- 阿里巴巴 JAVA开发手册 内含大量规范,应用范例.涉及数据库,高并发,集合,索引等等大量干货
- 如何计算cuboid的数量
- 关于设计(三)设计存在的意义
- 史上最详细的Android原生APP中添加ReactNative 进行混合开发教程
- 米国总统好声音巅峰对决!
- 在linux服务器上安装JDK
- Android Canvas API总结和使用方法