是头文件全局作用域中的变量



假设我有一个头文件来存储枚举:

my_enum.h:

#ifndef my_enum_h
#define my_enum_h
enum my_enum {ONE, TWO};
#endif

然后我将这个头文件包括在文件game.hgame.cc中。最后,在main.cc中加入了game.h

我现在可以在main.cc中使用一和二。全局定义这些变量是否正常?

当您将game.h包含在main.cc中时,因为game.h已经包含my_enum.h,所以可以从包含game.h以及my_enum.h的文件中访问它

解决方案1:从代码中删除"#includemy_enum.h",因为它似乎不需要

解决方案2:也许可以更改枚举的名称/内的值

如果在实现文件中包含标头。这与在实现文件中编写头文件的确切代码相同。

因此,这个enum声明将包含在您的game.h中,并随后包含在main.cc中。

如果你想删除它,你必须从头文件中删除它,并在任何你想使用它的地方本地声明它。

最新更新