C与C++混合编程
来源:互联网 发布:sql语句执行顺序limit 编辑:程序博客网 时间:2024/06/07 09:28
在C和C++混合编程的项目中,难免要相互调用对方的函数,如果不做特殊处理,就很容易出现编译出错的问题。
C中调用C++的函数,在C++文件中已实现的函数,通过#include包含的.h文件可以找到,但提示函数未定义(undefined)。这是什么原因呢?
如我们定义了一个函数。如:
int func(int t)
{
//function
return 0;
}
C编译器会将此函数编译成类似_func的符号,C连接器只要找到了调用函数的符号,就认为链接成功。而C++编译器为了实现函数的重载,会再编译时带上函数的信息,将上面的函数编译成类似_func_int这样的符号。所以在C函数中调用C++中调用的函数时,编译器提示函数未定义。
我们只需要在C++文件和.h文件中,加入extern“c” {},告诉编译器此C++文件依照C的方式来编译封装接口,函数实现还是依照C++语法和C++方式来编译。如:
l func.c文件
#ifdef __cplusplus
extern “C” {
#endif
int func(int t)
{
//function
return 0;
}
#ifdef __cplusplus
}
#endif
l func.h文件
#ifdef __cplusplus
extern “C” {
#endif
#ifndef __FUNC_H__
#define __FUNC_H__
int func(int t);
#endif
#ifdef __cplusplus
}
#endif
其中__cplusplus是C++编译器的保留宏定义。extern“C” {}是高手C++编译器{}里面的函数按照C的编译格式来编译和链接。
这样,就可以在C函数中调用C++函数,也可以在C++函数中调用C的函数。
- C与shell混合编程
- C与C#混合编程
- C与C++混合编程
- nasm与c混合编程
- Lua 与 C混合编程 .
- ARM与C混合编程
- c与c++混合编程
- C与汇编混合编程
- C与C++混合编程
- matlab与C混合编程
- matlab与c混合编程
- C与C++混合编程
- C与C++混合编程
- C与汇编混合编程
- matlab与C混合编程
- C与汇编混合编程
- MATLAB与C混合编程
- matlab与c混合编程
- LeetCode #5 Longest Palindromic Substring
- Pandas数据读取与显示2
- HTML5知识填坑(五)——Web Workers
- Silver Cow Party POJ
- JAVA arraylist的线程安全
- C与C++混合编程
- 精准平特一肖公式/平码三中三/平码3中3/平特一肖/平特一码/平特1码
- 用Kibana和logstash快速搭建实时日志查询、收集与分析系统
- struts2框架中ActionContext对象详解
- 2015 ASIA THAILAND
- Asp.net core拦截器
- JavaSE_42th_异常
- Spring4深入理解01----Bean配置(依赖注入和控制反转的区别)
- css之border&三角形