一旦工作,为什么不包括警卫或编译?

Ste*_*art 11 c++

我正在编译一些依赖于包含保护的代码,以防止对象和函数的多个定义,但Visual Studio 2008给了我链接错误,有多个定义.我不明白为什么,因为我之前使用的代码非常类似,并没有造成问题.我必须做一些愚蠢的事,但我不知道它是什么.我也尝试取出包含警卫并使用#pragma一次,但我得到了相同的链接错误.我应该检查什么?

Jam*_*lis 24

如果它们是链接器错误,最可能的原因可能是标头中定义的非内联函数.

如果在包含在多个源文件中的标头中有非内联函数,则将在每个源文件("转换单元")中定义它,因此该函数将被定义多次,因此多个定义错误.