extern “C”
时间: 2023-08-01 19:14:53 浏览: 39
extern "C" 是一个 C++ 中的语言修饰符,用于告诉编译器某个函数或变量使用 C 语言的调用约定。当在 C++ 代码中调用 C 语言编写的函数时,需要使用 extern "C" 来确保函数名按照 C 语言的约定进行链接。
这个修饰符的作用是告诉编译器不要对被修饰的函数名进行符号重载(name mangling)。C++ 支持函数重载,也就是说可以有多个同名函数,但是它们的参数列表不同。而 C 语言不支持函数重载,所以在 C++ 代码中调用 C 函数时,需要使用 extern "C" 来避免链接错误。
例如,下面的代码演示了如何在 C++ 中调用一个使用 C 语言编写的函数:
```cpp
extern "C" {
void c_function(int arg);
}
int main() {
c_function(42);
return 0;
}
```
这样,编译器就知道 c_function 是按照 C 语言的约定进行链接的。如果不使用 extern "C",编译器会将 c_function 当作一个 C++ 函数进行处理,导致链接错误。
相关问题
extern C语言
extern 是 C 语言中的一个关键字,用于声明一个函数或变量是在其他文件中定义的。它可以用来在一个源文件中引用另一个源文件中定义的函数或变量。
当在一个源文件中使用 extern 关键字声明一个函数时,意味着该函数是在另一个源文件中定义的,编译器会在链接阶段将其与实际定义连接起来。
例如,在一个源文件 A.c 中使用 extern 声明一个函数 foo():
extern void foo(); // 函数 foo() 在其他地方定义
然后在另一个源文件 B.c 中定义该函数:
void foo() {
// 函数定义
}
这样,编译器会在链接阶段将 A.c 和 B.c 中的代码连接起来,使得 A.c 中对 foo() 函数的调用能正确执行。
extern c语言举例
C语言中,auto和static关键字用于定义变量的存储类型。
auto: 默认存储类型,在函数体内定义的变量默认为auto。这种类型的变量存储在栈中,作用域仅限于所在函数。
static: 存储类型为静态,在整个程序运行期间都存在。这种类型的变量存储在静态存储区中,作用域仅限于所在文件。
extern: 存储类型为外部,用于在一个文件中声明另一个文件中已经定义过的变量或函数。extern变量或函数只是声明,而不是定义。
相关推荐
![](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)