C++ extern是什么意思,怎么使用
时间: 2024-12-17 22:21:18 浏览: 4
在C++中,`extern`关键字用于指示变量、函数或类型在当前源文件中是外部定义,即它在其他文件中已经被声明过,但并未在此处提供具体的实现。`extern`有以下几个主要用途:
1. **声明**:当你在头文件中声明一个变量或函数,但在源文件中不想包含其实现,可以使用`extern`。例如:
```cpp
// 头文件 (header.h)
extern int globalVariable;
// 源文件 (source.cpp)
int globalVariable = 42; // 这里是实现部分
```
2. **链接符号**:如果在一个文件中通过`extern`声明,另一个文件中提供实现,那么这两个文件会生成相同的链接符号,允许链接器将它们连接起来。
3. **共享数据**:`extern`常用于全局变量,特别是在多文件项目中,可以让所有相关的文件都能访问到这个变量。
4. **函数原型声明**:在C++98及之前版本,`extern`可以单独用来声明函数原型,以便让编译器知道函数的存在,但不需要知道其详细实现。
使用`extern`时需要注意以下几点:
- 在一个文件中声明,在另一个文件中定义。
- 如果一个变量已经在某个地方进行了初始化,那么使用`extern`时不需要再次初始化,否则可能会导致多次初始化的问题。
相关问题
c++ extern
引用中的代码展示了C++中使用extern关键字的示例,它指示存在于其他文件中的外部变量和函数。在这个例子中,extern关键字被用来声明extern_variable_blog_addr和extern_variable_github_addr两个字符串变量,以及extern_function_add和extern_function_name两个函数。这意味着这些变量和函数在其他文件中有定义,并且可以在当前文件中使用。
在代码中出现的extern "C"是一个指示符号名称的语法,它用于编译C代码和C++代码混合的情况。它告诉编译器按照C的规则来处理函数和变量的命名和调用约定。这在调用C库时可能非常有用。
总结来说,关键字extern用于声明外部变量和函数,它们的定义在其他文件中。而extern "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 ]
阅读全文