c++ extern的作用
时间: 2023-11-21 16:56:33 浏览: 36
extern是C++中的一个关键字,它可以应用于一个全局变量,函数或模板声明,说明该符号具有外部链接属性。也就是说,这个符号在别处定义。在C++中,全局变量的作用范围仅限于当前的文件,但是C++也支持分离式编译,允许将程序分割为若干个文件被独立编译。因此,如果需要在文件间共享数据,就需要使用extern关键字。通过在一个文件中使用extern声明一个变量,可以在另一个文件中使用该变量,而不需要重新定义它。
举个例子,假设我们有两个文件file1.cpp和file2.cpp,它们都包含一个名为count的全局变量。如果我们想要在file2.cpp中使用file1.cpp中定义的count变量,我们可以在file2.cpp中使用extern声明该变量,如下所示:
```c++
// file1.cpp
int count = 0; // 定义全局变量count
// file2.cpp
extern int count; // 声明全局变量count
```
这样,在file2.cpp中就可以使用count变量了,而不需要重新定义它。
相关问题
c++ extern
在C++中,extern是一个关键字,用于声明一个变量或函数是在其他文件中定义的。它告诉编译器在其他文件中寻找该变量或函数的定义。在使用extern时,需要注意以下几点:
1. extern关键字可以省略,因为C++默认所有未定义的变量和函数都是extern类型。
2. 在函数声明中,extern关键字可以省略。
3. 在同一文件中,可以使用extern声明一个在其他文件中定义的变量或函数。
4. 在其他文件中定义的变量或函数,需要在当前文件中使用extern进行声明,才能使用它们。
5. 在C++中,extern "C"用于告诉编译器按照C语言的方式进行编译,以便在C++代码中调用C语言的函数和变量。
C++ extern
C中的extern关键字在不同上下文中有不同的含义和作用。在C中,extern关键字可以用于函数声明和全局变量声明。
当用于函数声明时,extern关键字表示该函数是在其他文件中定义的,并且可以在当前文件中引用和调用。它告诉编译器,在其他文件中存在这样一个函数,所以在当前文件中可以使用它。函数声明中的extern关键字可以省略,只需要声明函数的返回类型和参数列表即可。
当用于全局变量声明时,extern关键字表示该变量是在其他文件中定义的全局变量,并且可以在当前文件中引用和使用。它告诉编译器,在其他文件中存在这样一个全局变量,所以在当前文件中可以引用它。和函数声明一样,全局变量声明中的extern关键字也可以省略。
总之,C中的extern关键字用于声明外部函数和全局变量,以便在当前文件中引用和使用它们。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [C++中的extern](https://blog.csdn.net/deatharthas/article/details/113769269)[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: 50%"]
- *3* [C/C++中 extern用法](https://blog.csdn.net/weixin_40933653/article/details/126715139)[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: 50%"]
[ .reference_list ]