extern 在c中和c++中 一样么
时间: 2023-09-07 12:01:25 浏览: 116
在C语言中,extern关键字用于声明一个全局变量或函数。它的作用是告诉编译器这个变量或函数是在其他源文件中定义的,需要在当前文件中使用。
在C和C++中,extern的使用方式基本上是一样的。无论是在C还是C++中,我们都可以使用extern关键字来声明全局变量或函数。这个声明通常用于头文件中,告诉编译器该变量或函数是在其他文件中定义的。
然而,C和C++在一些细节上有所不同。在C中,全局变量的声明通常用extern关键字,而在C++中extern关键字通常是可选的。C++中,全局变量可以直接在头文件中定义,而无需使用extern关键字。
另外,在C++中,extern关键字还可以用于声明和定义模板的全局变量或函数。这一特性是C所不具备的。
总结起来,extern关键字在C和C++中的基本作用是相同的,都用于声明全局变量或函数的外部定义。然而,C++中使用extern的一些细节和用法可能与C有所不同。因此,在编写跨语言项目时,我们需要注意这些细微差别,以确保代码的兼容性和正确性。
相关问题
extern在C++语言中用法
在C++语言中,`extern`是一个关键词,主要用于指示变量或函数的存在位置,并不是它的实际存储空间。主要有以下几个用途:
1. **声明**:如果你在头文件(`.h`)中定义了一个变量或函数,但在另一个源文件(`.cpp`)中想要使用它,就需要在那个`.cpp`文件中用`extern`声明其存在。例如:
```cpp
// example.h
extern int myVariable;
extern void printMessage();
```
2. **链接**:在编译时,`extern`声明的变量或函数会在链接阶段寻找定义。这意味着你可以在多个`.cpp`文件中声明,而在链接时仅需确保在某个源文件中有相应的定义。
3. **全局共享**:对于全局变量,如果在所有源文件中都用了`extern`,那么它们实际上是共享的,只有一个副本。
4. **动态加载库**:`extern "C"`常用于链接库中的函数,表示使用C语言的命名约定。
注意,如果你在`.cpp`文件中定义了同名的变量或函数,则不需要在`extern`声明中指定,因为编译器会知道它是被本地定义的。
Extern在c语言中的作用
`extern`关键字在C语言中主要用于声明变量或函数的存在,但在当前文件之外。当你在一个源文件中声明了一个变量或函数,但不想在该文件中定义它(即提供其实现),这时就需要使用`extern`。这样做的目的是让其他源文件能够引用这个变量或函数,而真正的定义会在另一个源文件中。
例如:
```c
// file1.c
extern int global_var;
void func_to_be_used(void); // extern函数声明
int main() {
func_to_be_used();
return 0;
}
// file2.c
int global_var = 42; // 在这里定义全局变量
void func_to_be_used() { /* function implementation */ }
```
在这个例子中,`file1.c`通过`extern int global_var`告诉编译器`global_var`将在别的地方找到。实际的变量定义在`file2.c`中。`func_to_be_used()`的声明也在`file1.c`,并在`file2.c`中实现了。
阅读全文