您的位置:首页 > 编程语言 > C语言/C++

C与C++的相互调用问题

2011-10-03 20:51 218 查看
#ifdef __cplusplus
extern "C" {
#endif

int add(int a, int b);

#ifdef __cplusplus
}
#endif

int add(int a, int b)
{
return a+b;

}
// 在声明的时候用 extern "C" int add(int a, int b)
C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为: void foo(int x, int y);
该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。
c++ 因为作用域的关系,对函数名会进行转化 例如将 add() 变成 mymathadd12()。 而使用了 extern “c” 就会使编译器不进行转化,而按照原函数名处理。
C++提供了C连接交换指定符号extern“C”来解决名字匹配问题。例如extern "C"{这里就是你头文件,全局变量,main函数的地方}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: