全局变量的问题

前几天在写代码的时候遇到了全局变量的问题,之前只知道在文件开始时申明,在同一个cpp和头文件中使用,没有注意到在别的cpp中使用其他cpp中的全局变量的问题,导致在头文件中申明之后,虽然引入头文件但是编译不过,在网上查了一下,大致记下来一点。

先说一下申明和定义吧,以前只知道定义之后然后初始化,对声明和定义的概念没有搞清楚。

声明变量是相对编译器来说的,声明一个变量是讲变量名标识符告诉编译器,让编译器认知这个变量,不一定分配内存空间。而定义是给变量分配内存空间,存放对应类型的数据。

在同一个cpp里,声明和定义没有明显的区别,定义一个变量也是声明一个变量,程序在执行到这个地方就完成了内存的分配。但是在同一工程的多个文件下,声明和定义就有了区别,在一个cpp里定义了变量,在其他cpp中要使用,就需要声明,全局变量也是这样。

extern int g_name;              声明,前面必须加extern关键字
int g_name;                      定义,没有extern关键字

没有在全局变量前面加“extern”都是定义,声明可以有多次,定义只能有一次。

所以全局变量应该这样使用

1.h:
extern int g_name;              声明

1.cpp:
#include "1.h"
int g_name;                         定义

2.cpp
extern int g_name               声明   头文件可以不要

全局变量的作用域是当前整个项目。

猜你喜欢

转载自www.cnblogs.com/w1ng/p/10176791.html