当前位置:首页 C++ > 正文

在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”

作者:野牛程序员:2024-02-01 14:27:58 C++阅读 2666

在C++程序中调用被C编译器编译后的函数时,需要使用 extern "C" 来告诉C++编译器按照C语言的方式进行函数的链接,这是因为C++和C语言在函数的名称修饰上存在差异。

C++编译器会对函数的名称进行修饰(Name Mangling),以支持函数重载和命名空间等特性。而C语言的编译器不会对函数名称进行修饰,因此在C++代码中调用C语言编译后的函数时,需要告诉C++编译器不要对函数名称进行修饰,以便正确链接。

使用 extern "C" 声明告诉编译器按照C语言的方式处理函数名,确保函数能够在链接时正确匹配。这样做使得C++代码可以与C代码进行无缝集成,调用C编写的库函数或者与其他C代码进行交互。

以下是一个简单的示例代码,演示了如何在C++程序中调用被C编译器编译后的函数,并使用 extern "C" 来声明:

// C code: mylibrary.c
#include <stdio.h>
// C函数,将在C++程序中被调用
void my_function() {
    printf("Hello from C function!\\n");
}

在这个示例中,my_function() 是在C代码中定义的函数,然后在C++代码中通过 extern "C" 声明来通知C++编译器按照C语言的方式处理函数名。这样,C++程序就可以正确调用C编译后的函数。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击