extern关键字使用

如何加载其他模块的全局变量? extern关键字

声明与定义

根据C++标准的规定,一个变量声明必须同时满足两个条件,否则就是定义:

  1. 声明必须使用extern关键字;

  2. 不能给变量赋初值

1
2
3
4
int a;  //定义
int a = 0; //定义
extern int a =0; //定义
extern int a; //声明

使用其他模块变量例子

1
2
3
4
5
6
7
8
9
10
11
12
//file.h
extern int a;

//file.cpp
int a = 10;

//main.cpp
#include <cstdio>
#include "file.h"
int main(){
printf("a = %d", a);
}

终端上编译运行,输出

1
gcc main.cpp file.cpp && ./a.out

这等同于

1
2
3
4
5
6
7
8
9
//file.cpp
int a = 10;

//main.cpp
#include <cstdio>
extern int a;
int main(){
printf("a = %d", a);
}

如果不佳extern关键字将提示变量重复声明。

最佳实践

  • h文件extern声明
  • c/cpp文件内定义
  • 使用时include头文件
作者

Desirer

发布于

2025-05-20

更新于

2025-05-25

许可协议