为bool类型定义名称代替“true”和“false”

时间:2011-01-07 02:01:52

标签: c++ boolean c-preprocessor

我想使用bool在加载X和从文件加载Y之间来回切换。我不想使用“true”和“false”,因为它不会使代码清晰。我宁愿使用像LOAD_X或LOAD_Y这样的东西...下面的代码是这样做的吗?或者有更好的方法吗?

#define LOAD_X true
#define LOAD_Y false

编辑:好的,所以似乎enum是要走的路......但命名方案应该是什么?像所有大写字母一样,或第一个单词的小写字母,后续单词的大写字母等

4 个答案:

答案 0 :(得分:6)

您可以使用枚举:

enum LoadType {
    LoadY,
    LoadX
};

或者,您可能更喜欢使用命名空间来约束枚举数的范围:

namespace LoadType {
    enum Type {
        LoadY,
        LoadX
    };
};

使用枚举的优点是,如果你的函数在第二个例子中采用LoadType(或LoadType::Type),则不能传递任意整数或bool;你只能传递一个枚举器(或者显式地转换为枚举类型的东西,这在代码审查中很容易发现)。

答案 1 :(得分:3)

我想这有用,如果你只有两种选择。我很想去一个枚举:

enum LOADMODE {
    LOAD_X,
    LOAD_Y
};

至少,偏好宏而不是宏:

const bool LOAD_X = true;
const bool LOAD_Y = false;

他们将遵守范围规则,并且在没有意识到姓名冲突的情况下不会默默地破坏。

答案 2 :(得分:3)

我会使用枚举代替。仅仅因为有两种选择,并不意味着类型应该是bool

enum load_type { loadX, loadY };

答案 3 :(得分:-1)

我认为Load X IS LOAD。 小写字体看起来更友好,可以选择鲜艳的颜色。 枚举LoadType {     LoadY,     LoadX 没关系。