C++ 中的extern“C”作用 ?
参考答案:
在C++中,extern "C"
是一个链接指示符,它告诉C++编译器,在后面的代码块中,所有的函数和变量都应当按照C语言的方式进行链接,而不是C++的方式。
C++支持函数重载,因此编译器在编译时会为函数名添加一些装饰(例如参数类型和数量),以区分不同的函数。而C语言并不支持函数重载,因此它的函数名在链接时不会发生改变。
当你希望在C++程序中调用C库函数,或者在C++程序中定义供C程序使用的函数时,就需要使用extern "C"
。否则,由于C++的函数名修饰(name mangling)规则,C程序可能无法找到正确的函数。
例如,假设你有一个C库,它定义了一个函数int add(int a, int b);
。在C++中,你可能想要这样使用它:
extern "C" {
#include "clib.h"
}
int main() {
int result = add(2, 3);
return 0;
}
在这个例子中,extern "C"
告诉C++编译器,add
函数应当按照C语言的方式进行链接。
同样地,如果你在C++中定义了一个函数,希望它能够在C程序中被调用,你也需要使用extern "C"
:
extern "C" int my_function(int a, int b) {
return a + b;
}
在这个例子中,my_function
将会按照C语言的方式进行链接,因此C程序可以正确地找到并调用它。