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

C++ C++;单值枚举与预处理器指令,c++,performance,enums,coding-style,C++,Performance,Enums,Coding Style,关于最佳实践和性能的非常简单的问题。我知道直接在代码中使用裸常量是个坏主意(例如,-1表示“未分配”)。如果我能帮助的话,我通常不喜欢使用预处理器来处理这类事情,因为我不喜欢大喊大叫(例如#define UNASSIGNED-1),也不喜欢打破将预处理器名称放在所有大写字母中的惯例。所以我开始使用匿名枚举: enum { Unassigned = -1 }; 问:与预处理器方法相比,是否存在运行时性能损失?这是个坏主意吗?应该不会影响性能。但是,为什么不干脆常量int Unassigned

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

enum {
  Unassigned = -1
};

问:与预处理器方法相比,是否存在运行时性能损失?这是个坏主意吗?

应该不会影响性能。但是,为什么不干脆
常量int Unassigned=-1

应该不会对性能产生影响。但是,为什么不干脆
const int Unassigned=-1

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

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

const int Unassigned = -1;

(当然,将实际类型替换为
int

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

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

const int Unassigned = -1;

(当然,将实际类型替换为
int

您考虑过静态
const
变量吗?我不是在建议,只是在提问。同样,您是否考虑过,如果您需要多个这样的常量,它们以某种方式属于一起,枚举类是否是一种可能的解决方案?您是否考虑过静态
const
变量?我不是在建议,只是在提问。同样地,您是否考虑过,如果您需要多个这样的常量,它们以某种方式属于一起,枚举类是否是一种可能的解决方案?同意。既然您提到了它,在C++11中使用
constexpr int Unassigned=-1可能更好同意。既然您提到了它,在C++11中使用
constexpr int Unassigned=-1可能更好