【发布时间】:2016-04-02 20:16:08
【问题描述】:
将命名空间声明放在 .h 文件中是不是不好的形式?
//object.h
namespace Stuff {
enum Type {Player, Enemy, Gold, Potion}
}
...
当其他文件包含 object.h 时,它可能会被多次定义。会不会有问题?
【问题讨论】:
标签: c++ enums namespaces header-files
将命名空间声明放在 .h 文件中是不是不好的形式?
//object.h
namespace Stuff {
enum Type {Player, Enemy, Gold, Potion}
}
...
当其他文件包含 object.h 时,它可能会被多次定义。会不会有问题?
【问题讨论】:
标签: c++ enums namespaces header-files
这就是为什么要包含标头保护(pragma once, if / end if)。您还可以使用枚举 class 类型,例如enum class EnumClassName 用于范围解析而不是命名空间。
【讨论】:
您似乎没有在 .h 文件中包含 HEADER GUARD。 它看起来像这样 -
#ifndef _HEADER_GUARD_
#define _HEADER_GUARD_
//Your .h file content
#endif
这可以防止在一个文件中多次包含同一个头文件。 人们通常使用 .h 文件的名称作为 HEADER_GUARD 宏。
例如,对于名为 abhi.h 的文件,我更喜欢使用 _ABHI_H_
【讨论】: