1. header1.h中声明全局变量,header1.cpp中定义全局变量
// header1.h
#ifndef HEADER1_H_
#define HEADER1_H_
extern int g_n;// 头文件中必须加extern声明全局变量,不赋值
//int g_o;错误
//int g_o = 10;错误
//extern int g_o;错误
#endif
// header1.cpp
#include "header1.h"
int g_n = 100;// 定义时绝对不能再加extern了,不给g_n赋值则自动赋值0
//int g_n;// 也正确, g_n为0
2. header2.hpp中声明定义全局变量
// header2.hpp
#ifndef HEADER2_HPP_
#define HEADER2_HPP_
int g_m = 1;// 正确,在hpp文件中定义了全局变量
//int g_m;// 正确,自动初始化为0
//extern int g_m = 1;// 正确
//extern int g_m;// 错误,这只是声明没有定义,需要在某个cpp文件中int g_m = ?;补上定义才正确
#endif