即使我使用标题保护,我也有重复的定义。

时间:2017-10-06 22:40:09

标签: c++ header-files

我目前正在使用4个文件。

  • 的main.cpp
  • subFunctions.cpp:具有我经常使用的函数的所有函数声明
  • variables.h:具有main.cpp和subFunctions.cpp
  • 使用的全局变量
  • forwardFunctionDeclarations.h:具有subFunctions.cpp
  • 的前向声明

所以main包含了variables.h以及forwardFunctionDeclarations.h。 subFunctions.cpp也包含了variables.h,因为正如我所说它需要它们。对于我用于variables.h的标题保护:

#ifndef VARIABLES_H
#define VARIABLES_H

//contents...

#endif

和forwardFunctionDeclarations.h一样,除了更改条件短语。

然而,当我尝试构建程序时,它为我在variables.h中的所有全局变量提供了“...已在main.obj中定义”的错误。我的印象是虽然变量h包含在main.cpp和subFunctions.cpp中(因为它需要),但由于标题保护,它在编译时不会复制变量。

0 个答案:

没有答案