extern "C" void
时间: 2024-08-15 16:10:28 浏览: 56
`extern "C"` 是C++语言中的一个关键字,用于声明外部链接(external linkage)。当你在一个C++程序中需要调用C语言编写的函数,或者将C++函数暴露给C语言使用时,会使用到这个特性。它告诉编译器当前的函数应该按照C语言的约定进行链接和解析,而不是默认的C++名称 mangling。
简单来说,`extern "C"`的作用有两点:
1. 解除C++名字修饰规则:在C++中,函数名会被加上命名空间、作用域等信息,这可能导致不同的编译单元(translation unit)之间找不到对方的函数。`extern "C"`让函数名字保持一致,便于其他语言模块识别。
2. 兼容性:使得C++编译器不会对C函数名做优化处理,保证了和其他C库或程序的接口兼容。
例如:
```cpp
extern "C" {
void myCFunction(int arg);
}
// 或者
void C_API myCFunction(int arg); // 等效于 extern "C"
```
相关问题
extern void和void
`extern void` 和 `void` 是两个不同的东西。
`void` 是一种数据类型,在 C/C++ 中表示空类型。它通常用于函数的返回类型,表示该函数不返回任何值。
`extern void` 中的 `extern` 是一个关键字,表示该变量或函数是在另一个文件中定义的,并且在当前文件中声明。在 C/C++ 中,`extern` 通常用于声明全局变量或函数。
因此,`extern void` 声明的是一个在另一个文件中定义的没有返回值的函数或变量。
extern void
extern void是一个在C语言中用来声明函数的关键字。它表示该函数是在其他地方定义的,而在当前的代码文件中只是声明。这样可以在当前的代码文件中使用该函数,而不需要知道具体的实现细节。extern void的作用是为了在编译阶段能够正确地引用到函数的定义。在声明函数时,有和没有extern的效果是一样的,因此可以省略extern关键字。对于变量而言,有和没有extern是有区别的,extern关键字用来声明一个变量是在其他地方定义的。至于void关键字,它表示该函数没有返回值。因此,extern void表示声明了一个没有返回值的函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [void,extern,sizeof 关键字分析](https://blog.csdn.net/qq_36016407/article/details/54915956)[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_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [从汇编看c++中extern关键字的使用](https://download.csdn.net/download/weixin_38688403/13996724)[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_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [【014 关键字】一文彻底搞懂extern用法](https://blog.csdn.net/qq_41709234/article/details/122984203)[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_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]