阅读量:0
在C++中,函数名可以有修饰(name mangling),这是为了支持函数重载,C语言并不支持函数重载,因此C++编译器通常会对C++函数名进行修饰以生成唯一的标识符。
(图片来源网络,侵删)当你尝试从C代码中调用C++函数时,可能会遇到找不到符号的问题,因为C编译器无法识别被修饰的C++函数名,解决这个问题的一种方法是使用extern "C"
来告诉C++编译器使用C链接约定,这样就不会对函数名进行修饰。
// C++ code extern "C" void myFunction() { // Your code here }
在这个例子中,myFunction
函数将被C编译器视为未修饰的函数名,因此可以在C代码中调用它。
另一种解决方案是在C++代码中使用extern "C"
声明一个C风格的函数原型,然后在实现这个函数时使用C++的名称。
// C++ code extern "C" void c_style_function(); void c_style_function() { // Your code here }
在这个例子中,c_style_function
函数在C代码中是可见的,因为它有一个C风格的函数原型。