c++extern “C”有什么作用
时间: 2023-11-17 07:05:08 浏览: 79
extern "C"的作用是告诉编译器将函数按照C语言的方式进行编译和链接。在C++中,函数名会被编译器进行名称修饰(name mangling),这意味着函数名会被加上一些额外的信息,如参数类型和数量等。这使得C++函数在链接时不兼容C语言的函数。使用extern "C"可以告诉编译器不要进行名称修饰,保证C++函数能够兼容C语言的函数,使得C++代码能够与C代码进行交互。
相关问题
c++ extern c
在C++中,extern "C"的作用是告诉编译器使用C规则编译指定的代码,以支持C++与C混合编程[^1]。这个指令主要用于解决C++的函数名重载问题。在C++中,函数名可以根据参数的类型和个数进行重载,而C语言不支持函数名重载。当我们需要在C++代码中调用C语言编写的函数时,由于C语言不支持函数名重载,所以需要使用extern "C"来告诉编译器使用C规则编译这部分代码,以避免函数名重载导致的编译错误。
下面是一个示例,演示如何在C++中使用extern "C"来调用C语言编写的函数:
```cpp
// C语言代码
#include <stdio.h>
void hello() {
printf("Hello, World!\n");
}
// C++代码
extern "C" {
void hello(); // 使用extern "C"声明C语言函数
}
int main() {
hello(); // 调用C语言函数
return 0;
}
```
运行上述代码,输出结果为:
```
Hello, World!
```
C++ extern c
extern "C" 是一个 C++ 语言的扩展,用于声明 C 函数在 C++ 环境中使用。它告诉编译器按照 C 的方式进行函数的命名和链接。
在 C++ 中,函数的命名和链接方式与 C 是不同的。C++ 支持函数重载、命名空间等特性,因此会对函数名进行修饰以进行区分。而 C 则没有这些特性,函数名不会被修饰。
当在 C++ 程序中调用 C 函数时,如果没有使用 `extern "C"` 来声明,编译器会按照 C++ 的方式处理函数名,导致链接错误。使用 `extern "C"` 可以确保编译器按照 C 的方式处理函数名,使得 C++ 能够正确调用 C 函数。
示例:
```cpp
// 声明一个 C 函数
extern "C" {
void myCFunction();
}
// 在 C++ 中调用该函数
int main() {
myCFunction();
return 0;
}
```
在上面的示例中,`myCFunction` 是一个 C 函数,在 C++ 中使用 `extern "C"` 进行了声明,以确保正确的链接和调用。
阅读全文