c与c++程序连接问题,第1张

c与c++程序连接问题,第2张

它们之间的连接问题主要是由于c c++编译器无法解码函数名造成的,考虑以下两个函数
/* C */
intstrlen(char * string)
{
}
/c++
intstrlen(C中的char,函数是通过函数名来标识的,而在c++中,由于函数的重载,函数的标识是通过函数名、函数返回类型和函数参数列表的组合来完成的。所以上面两个相同的函数,用C和C++编译后,名字会完全不同。所以如果一个C编译器编译的目标代码和一个C++编译器编译的目标代码连接,会出现连接失败的错误。
解决方法是使用extern C,避免C++编译器用C++的方式编译C函数
。它是在头文件中定义的:
extern "C " intstrlen(char * string)

extern" c "
{
]由于C编译器不知道extern " C "的编译指令,程序员希望C、C++程序可以共享这个头文件,因此,通常在头文件中使用_cplusplus宏来进行区分:
# if define _ cplusplus
extern "

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » c与c++程序连接问题

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情