公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

XMC实验分享之122: C函数调用C++函数

XMC实验分享之122: C函数调用C++函数

User12775
Level 5
Level 5
First solution authored First like received

C函数,C++函数两者混用是很常见的情况. 但是C, C++编译器对函数编译后的符号处理有所不同, 主要是因为C++支持函数重载引起的. 所以有几点需要特殊处理.


如果是C++函数调用C函数, 直接调用即可, 如果需要注意到namespace的问题, 可以在C函数之前增加::表示调用全局namespace中的函数.


如果是C函数调用C++函数, 情况复杂一点, 简单粗暴做法就是把所有代码用C++编译器来编译, 这样代码也不需要做特别的处理, 但是大多数情况, 这样不可行, 因为你拿到的已经是编译好的库文件. 这时候常用的做法就是:

#ifdef __cplusplus
extern "C" {
#endif
    
//C++函数供C函数调用的声明
    
#ifdef __cplusplus
}
#endif

这两个条件编译macro是解决name mangling的关键所在. 下面看看例子.


0 点赞
592 次查看
4 评论