error:LNK2005 已经在*.obj中定义的一种情况及解决办法

我的代码发生了这个错误,但是用了网上的#pragma once,#ifndef,extern都没能解决

经过仔细看代码发现,我的情况是这样的一个全局变量在一个头文件中定义,比如:head1.h中定义了全局变量int a = 10;

在一个类的头文件class.h中包含了头文件head1.h如:include "head1.h"

于是我将include "head1.h"从class.h中移到了class.cpp中,问题解决。

分析,因为class.cpp中include "class.h",class.h中include "head1.h",发现没,会造成head1.h的重复引用,虽然用pragma等也无法解决,移到class.cpp中,它生成obj文件时,只引用一次,问题解决。

有问题,大家共同讨论。

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