C++中extern的使用

目录

在C++中,extern是一个非常重要的关键字,它用于声明一个变量或函数是在其他文件中定义的。在本文中,我们将详细介绍extern的使用方法,并提供一些实际应用场景。

什么是extern?

extern是一个关键字,用于告诉编译器一个变量或函数是在其他文件中定义的。它可以用于两种情况:

  1. 声明一个全局变量或函数,以便在其他文件中使用。
  2. 在当前文件中引用其他文件中定义的全局变量或函数。

如何使用extern?

声明一个全局变量或函数

假设我们有两个文件:main.cpp和helper.cpp。我们想在main.cpp中使用helper.cpp中定义的全局变量和函数。为此,我们需要在main.cpp中使用extern关键字来声明这些变量和函数。

c++ 复制代码
// helper.h
extern int global_variable;

extern  void helper_function() ;
c++ 复制代码
// helper.cpp
int global_variable = 42;

void helper_function() {
    // do something
}
c++ 复制代码
// main.cpp
extern int global_variable;
extern void helper_function();

int main() {
    // use global_variable and helper_function
    printf("%d", global_variable);
    helper_function();
    return 0;
}

在当前文件中引用其他文件中定义的全局变量或函数

假设我们有两个文件:main.cpp和helper.cpp。我们想在helper.cpp中使用main.cpp中定义的全局变量和函数。为此,我们需要在main.cpp中使用extern关键字来声明这些变量和函数,并在helper.cpp中使用它们。

c++ 复制代码
// main.cpp
extern int global_variable;

void main_function() {
    // do something
}
c++ 复制代码
// helper.cpp
extern int global_variable;
extern void main_function();

void helper_function() {
    // use global_variable and main_function
}

应用场景

extern通常用于大型项目中,其中代码被分为多个文件。它允许在一个文件中定义变量或函数,并在其他文件中使用它们。这样,我们可以更好地组织代码,并使其更易于维护。

例如,在一个游戏项目中,我们可能有一个文件来处理用户输入,另一个文件来处理游戏逻辑,还有一个文件来处理图形渲染。使用extern,我们可以在这些文件之间共享变量和函数,从而使代码更加模块化和易于管理。

拓展

结合原子变量实现多线程操作

在头文件定义原子变量

cpp文件初始化

多线程使用

头文件声明变量

多线程并发使用

结论

在C++中,extern是一个非常有用的关键字,用于在多个文件之间共享变量和函数。它可以使代码更加模块化和易于管理。在使用extern时,请确保正确地声明变量和函数,并在需要时使用它们。

相关推荐
范什么特西15 小时前
计算机杂记
java
RyFit15 小时前
SpirngAI
java
庞轩px15 小时前
第六篇:Spring用了哪些设计模式?——从单例到代理,拆解框架中的经典设计
java·spring·设计模式·bean·代理模式·aop·单例
神仙别闹15 小时前
基于 C# OpenPGP 的文件管理系统
开发语言·c#
汉克老师15 小时前
GESP6级C++考试语法知识(四、图与树(四))
c++·贪心算法·优先队列·哈夫曼编码·哈夫曼树·gesp6级·gesp六级
番石榴AI16 小时前
纯 CPU 推理!0.1B 超轻量级端到端OCR模型,使用 Java 进行文档解析
java·开发语言·ocr
likerhood16 小时前
ConcurrentHashMap详细讲解(java)
java·开发语言·性能优化
机器学习之心16 小时前
集成BWM法、熵权法、改进博弈论组合赋权与三角直觉模糊云模型的多属性评价模型,MATLAB代码
开发语言·matlab·熵权法·三角直觉模糊云模型·bwm法·改进博弈论组合赋权·多属性评价模型
子兮曰16 小时前
whisper.cpp 深度解析:从边缘设备到实时语音识别
前端·c++·后端
特种加菲猫16 小时前
二叉搜索树:数据世界的“快速寻路指南”
开发语言·c++