大家好,我有这样的代码:
//a.h
#ifndef SB
#define SB
namespace A{ int a = 10; int b = 10;}
#endif
然而,如果我在a.cpp文件中导入a.h,编译器会抱怨:
error LNK2005: "int A::a" (?a@A@@3HA) already defined in a.obj
看起来编译器会在没有显式“import”语句的情况下将.h文件和.cpp文件组合在一起。但是对我来说,如果使用宏保护,则这种情况并不合理。
我使用Visual C++。