C++:头文件中的const全局变量

我们知道,如果将全局变量定义在头文件中,然后又在多处include该头文件,会导致全局变量的重复定义,从而无法编译:

//b.h
#ifndef B_H_
#define B_H_

int c_data = 100;    //在头文件b.h中定义了全局变量c_data
void fun_b();

#endif

//--------------------------------------------------------------------

//b.cpp
#include 
#include "b.h"        //导入b.h导致c_data被定义
using namespace std;

void fun_b()
{
	cout<
#include "b.h"        //导入b.h导致c_data被定义
using namespace std;

int main ()
{
	fun_b();
    return 0;
}

由于b.cpp和main.cpp都include了头文件b.h,相当于c_data被定义了两遍
因此导致编译器报错:multiple definition of `c_data'

解决方案是:

在cpp文件中定义全局变量,然后再头文件中对其声明:

//b.h

#ifndef B_H_
#define B_H_

extern int c_data;    //在头文件中声明全局变量
void fun_b();

你可能感兴趣的:(C/C++,c++)