C/C++中extern “C” 的作用
时间: 2023-06-27 16:07:39 浏览: 89
在C++中,extern "C"是用来指示编译器按照C语言的方式来编译函数的声明和定义的。在C++中,C和C++的函数调用方式不同,C++支持函数重载,而C不支持,因此在C++中调用C语言的函数时,需要使用extern "C"来告诉编译器按照C语言的方式来编译函数。
具体来说,当在C++中定义一个函数时,编译器会根据函数名和参数类型来生成一个符号名,这个符号名包含了函数名和参数类型的信息,这就是函数的名字修饰。而在C语言中,函数名没有被修饰,因此在C++中调用C语言的函数时,需要使用extern "C"来告诉编译器不要对函数名进行修饰,以便正确地调用函数。
例如,在C++中定义一个函数:
```
void foo(int x, int y);
```
编译器会生成一个名字修饰为"_Z3fooii"的符号名。而如果使用extern "C"来声明这个函数,编译器就会按照C语言的方式来编译函数,并生成一个名字为"foo"的符号名,以便正确地调用函数。
```
extern "C" void foo(int x, int y);
```
相关问题
为什么要在c/c++中应用extern
extern关键字用于在一个源文件中声明一个在另一个源文件中定义的变量或函数。这样可以让编译器知道这个变量或函数的存在,从而避免编译错误。在C/C++中,extern关键字通常用于在头文件中声明全局变量或函数,然后在源文件中定义它们。这样可以让多个源文件共享同一个变量或函数,从而提高代码的重用性和可维护性。
c/c++中extern应用举例
当在一个源文件中使用 extern 关键字声明一个变量或函数时,它表示该变量或函数在其他源文件中定义。举个例子,如果在一个源文件中声明了一个全局变量,但是在另一个源文件中定义了该变量,那么在第一个源文件中使用该变量时,就需要使用 extern 关键字来声明该变量。例如:
// file1.c
extern int global_var;
int main() {
global_var = 10;
return 0;
}
// file2.c
int global_var;
在上面的例子中,file1.c 中使用了 extern 关键字来声明 global_var 变量,因为它在 file2.c 中定义。
阅读全文