跳到主要内容

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程序可以正确地找到并调用它。