- 实现c++代码能够调用其他c语言代码,加上extern "C"后,这部分代码编译器以c语言的方式进行编译和链接,而不是按c++方式
- 原因:c和c++对同一个函数经过编译后生成的函数名是不同的,由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。如果在c++中调用一个使用c语言编写的模块中的某个函数,那么c++是根据c++的名称修饰方式来查找并链接这个函数,那么就会发生链接错误。
- 使用格式
#ifndef MYMODULE_H
#define MYMODULE_H
#include<stdio.h>
#ifdef __cplusplus
extern "C"{
#endif
void func1();
int func2(int a,int b);
#ifdef __cplusplus
}
#endif
#endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)