全局变量的定义和使用

我在changshu.h头文件中定义了几个全局变量,在其他cpp文件中也include了,运行时出现了already defined in main.obj错误。该怎么解决?

为避免多次包含同一个头文件,一般会在头文件加上独一无二的宏定义,即同一个项目里只出现一次的宏,一般就用__文件名_H__,
格式如下:
#ifndef FILENAME_H
#define FILENAME_H

/*中间是头文件的内容*/

#endif

加头文件卫士
#include CHANGSHU_H
#define CHANGSHU_H

#endif

你应该在头文件中声明变量:
extern int a;

然后仅在一个 cpp 里定义变量:
int a;

在头文件里定义变量会导致在每个包含了这个头文件的 cpp 里,这个变量都会被定义一次,从而引起重定义的错误。

在changshu.cpp里定义全局变量int a,在需要使用的其他类.cpp里extern int a;(前提当然要包含changshu.h)

书籍应该看仔细呀,这类问题书籍都会提及到的。其余文件引用需要extern

全局变量 最好不要定义在头文件

extern