C++单值枚举与预处理器指令

C++ Single value enums versus preprocessor directives

本文关键字:处理器 指令 预处理 单值 枚举 C++      更新时间:2023-10-16

关于最佳实践和性能的非常简单的问题。我知道直接在代码中使用空常量是个坏主意(例如-1表示"未分配")。如果可以的话,我通常不喜欢使用预处理器来处理这些事情,因为我不喜欢大喊大叫(例如#define UNASSIGNED -1),也不喜欢打破将预处理器名称全部大写的惯例。所以我开始使用匿名枚举:

enum {
Unassigned = -1
};

问题:与预处理器方法相比,这是否会对运行时性能造成影响?这是个坏主意吗?

没有运行时性能影响-编译器会知道在这两种情况下它们只是值-1

然而,我认为最好的方法是使用正确类型的常量。例如:

const int Unassigned = -1;

(当然,用int替换您的实际类型)。

应该不会对性能产生影响。然而,为什么不只是const int Unassigned = -1呢?