在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
