extern"C"作用
时间: 2023-08-26 14:06:40 浏览: 55
extern "C" 是一种 C++ 语言的扩展,用于指定特定函数或变量以 C 语言的方式进行编译和链接。C++ 语言支持函数重载和命名空间等特性,这些特性在 C 语言中是不支持的。当我们需要与其他使用 C 语言编写的代码进行交互时,可以使用 extern "C" 来告诉编译器以 C 语言的方式处理特定的函数或变量,以保证编译和链接的兼容性。
使用 extern "C" 可以实现以下几个作用:
1. 函数名修饰:C++ 编译器会对函数名进行修饰(name mangling),以支持函数重载和命名空间。extern "C" 可以取消对函数名的修饰,使函数在编译后的符号表中保持与 C 语言一致,以便在 C 代码中调用。
2. 链接规约:C++ 编译器默认使用 C++ 的链接规约,而 C 语言使用标准的 C 链接规约。extern "C" 可以指定使用 C 语言的链接规约,确保函数在链接时能够正确匹配。
3. 代码兼容性:extern "C" 可以确保 C++ 代码在链接时与 C 语言代码兼容,从而实现不同语言之间的交互。
总之,extern "C" 的作用是为了实现 C++ 与 C 语言之间的互操作性,确保编译和链接的兼容性。
相关问题
extern c作用
extern "C"的作用是用于实现C和C++之间的相互调用问题。C和C++对于函数名的处理方式是不一样的,所以当我们希望调用其他用C编写的函数时,需要告诉编译器使用不同的要求。通过在C++代码中使用extern "C"来声明函数,可以使编译器按照C的规则来处理函数名和参数排列的顺序,从而实现C和C++之间的兼容调用。
需要注意的是,extern "C"不能在函数内部使用,而是用于函数的声明。如果一个函数有多个声明,可以都加上extern "C",或者只在第一次声明中出现,后面的声明会接受第一个链接指示符的规则。
所以当我们需要在C++代码中调用C函数时,可以使用extern "C"来实现对C函数的调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [【004 关键字】extern “C“的作用是什么?](https://blog.csdn.net/qq_41709234/article/details/123082378)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [extern关键字作用.docx](https://download.csdn.net/download/Stephen___Qin/87567249)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
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!
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)