C++调用C函数,为什么要加extern "C"?
2015-01-26 14:59
435 查看
C++调用C函数,为什么要加extern
"C"? 2011-08-02 00:14:28
分类: C/C++
在C++程序中调用被C编译器编译后的函数,为什么要加extern "C"?
C++语言支持函数重载,C语言不支持函数重载,函数被C++编译器编译后在
库中的名字与C语言的不同,假设某个函数原型为:
void foo(int x, inty);
该函数被C编译器编译后在库中的名字为:
_foo
而C++编译器则会产生像:
_foo_int_int
之类的名字。为了解决此类名字匹配的问题,C++提供了C链接交换指定符号 extern "C"。
eg:
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
...
...
...
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
"C"? 2011-08-02 00:14:28
分类: C/C++
在C++程序中调用被C编译器编译后的函数,为什么要加extern "C"?
C++语言支持函数重载,C语言不支持函数重载,函数被C++编译器编译后在
库中的名字与C语言的不同,假设某个函数原型为:
void foo(int x, inty);
该函数被C编译器编译后在库中的名字为:
_foo
而C++编译器则会产生像:
_foo_int_int
之类的名字。为了解决此类名字匹配的问题,C++提供了C链接交换指定符号 extern "C"。
eg:
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
...
...
...
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
相关文章推荐
- 为什么在C++里调用被C编译器编译的函数,要加extern "c"
- C++调用C函数,为什么要加extern "C"?
- C与C++的互相调用(extern "C"的深层探索)
- extern "C"与C++中的C函数调用(3)—— 如何在C++中调用C函数
- 【c++面试题】c++中函数的重载,c++程序中调用C编译器编译后的函数为什么要加extern "C 4000 "
- C++调用C函数与Extern "C"
- 探索C++的秘密之详解extern "C",这就是为什么很多.lib被我们正确调用确总是无法解析的。
- extern "C"的惯用法, C与C++的相互调用
- C++函数重载实现的原理以及为什么在C++中调用C语言编译的函数时要加上extern "C"声明
- 如果 C++程序要调用已经被编译后的C 函数,该怎么办?extern "C"
- “#ifdef __cplusplus extern "C" { #endif”的定义-----C和C++的互相调用
- C/C++中函数的调用约定(__cdecl, __stdcall)以及extern, extern “C"的详细解释
- C++与C函数的相互调用方法以及error C2732:链接规范与"f"的早期规范冲突的解决办法
- extern "C"与C++中的C函数调用(4)—— 如何在C中调用C++函数
- 在C++程序中调用被C编译器编译后的函数,为什么要加extern "C"?
- C/C++基础问答(2):C和C++函数互相调用,extern "C"的作用
- Why? 在C++中调用被C编译后的函数,要在声明的前面加extern "C"
- 在C++中调用被C编译器编译后的函数,为什么要加extern "C"
- (转)探索C++的秘密之详解extern "C",这就是为什么很多.lib被我们正确调用确总是无法解析的。
- extern "C"与C++中的C函数调用(2)