c中的extern c++ extern
时间: 2023-11-21 07:14:36 浏览: 27
在C语言中,extern是一个关键字,用于在一个文件中声明一个全局变量或函数,表示该变量或函数在其他文件中定义或已经定义。
当使用extern关键字声明一个变量时,它将告诉编译器该变量在其他地方有定义,并且可以在当前文件中使用。这是为了避免重复定义相同的全局变量。
而extern "C"是用于C++语言的,它表示在C++编译环境中按照C语言的方式进行函数的链接和命名。当我们在C++代码中需要调用一个C语言写的函数时,需要使用extern "C"来告诉编译器按照C的方式进行处理。
总结起来,extern用于声明具有外部链接性的全局变量和函数,而extern "C"用于在C++中与C语言进行链接。
相关问题
extern c++
### 回答1:
"extern C++" 是一个 C++ 的关键字,通常用于在 C++ 代码中引用 C 代码中的函数或变量。
在 C++ 中,函数名由编译器自动重载,以便支持函数重载。这意味着在 C++ 中存在多个函数名相同但参数类型和数量不同的函数。这与 C 不同,因为在 C 中,所有函数都必须有唯一的名称。
当 C++ 代码需要调用 C 代码中的函数时,需要使用 "extern C++" 关键字来告诉编译器该函数使用 C 的命名约定,而不是 C++ 的命名约定。
例如,在 C 代码中定义了一个函数:
```c
int add(int a, int b);
```
在 C++ 代码中调用该函数时,需要使用 "extern C++" 关键字:
```c++
extern "C" {
int add(int a, int b);
}
```
这将告诉编译器该函数使用 C 的命名约定,因此可以在 C++ 代码中正确地调用该函数。
### 回答2:
extern "C" 是用在C++中的关键字,主要用于在C++代码中调用C语言的函数或变量。
C语言和C++语言有一些不同之处,最主要的区别是它们的函数名和变量名的命名规则不同。在C语言中,函数名和变量名是平级的,没有命名空间的概念,并且符号的重载、函数的重载等特性都不存在。而C++语言引入了命名空间的概念,允许同一个函数名在不同的命名空间中重载定义,还支持符号的重载,函数的重载等特性。
当C++代码需要调用一个C语言的函数或变量时,由于C语言的命名规则和C++不同,C++编译器无法直接将C语言的函数名或变量名理解为C++代码中的函数或变量。为了解决这个问题,就需要使用 extern "C" 来告诉编译器这是一个C语言的函数或变量,让编译器按照C语言的命名规则去处理。
extern "C" 的作用是用来修饰一段C语言的代码,告诉编译器按照C语言的规则来处理这段代码。在C++中,使用 extern "C" 修饰的代码可以在C++中调用。
一般情况下,extern "C" 会和 C 语言的头文件一起使用,例如:extern "C" { #include "c_header.h" }。这样,c_header.h中的函数和变量就可以在C++代码中正常使用。
总之,extern "C" 是C++中的关键字,用于在C++代码中调用C语言的函数或变量,并告诉编译器按照C语言的规则处理这些代码。
C++中extern"C"作用
在C语言中,extern "C"是一个用于指定函数按照C语言的命名和调用约定进行编译和链接的修饰符。它的作用是告诉编译器和链接器,被extern "C"修饰的函数应该使用C语言的命名和调用约定,而不是C++的。这在使用C++编写代码,并且需要与C语言进行交互时非常有用。
在C++中,默认情况下会对函数的名称进行修饰,以便支持函数重载和其他特性。这导致C++函数的名称与C语言函数的名称不同,因此无法直接在C代码中调用C++函数。通过在C++代码中使用extern "C"修饰函数声明,可以使该函数按照C语言的约定进行编译和链接,从而可以在C代码中正确地引用和调用该函数。
总结来说,extern "C"的作用是控制函数的编译和链接方式,使其按照C语言的约定进行处理,以便在C和C++之间实现正确的函数调用和交互。