C++单值枚举与预处理器指令
C++ Single value enums versus preprocessor directives
关于最佳实践和性能的非常简单的问题。我知道直接在代码中使用空常量是个坏主意(例如-1表示"未分配")。如果可以的话,我通常不喜欢使用预处理器来处理这些事情,因为我不喜欢大喊大叫(例如#define UNASSIGNED -1
),也不喜欢打破将预处理器名称全部大写的惯例。所以我开始使用匿名枚举:
enum {
Unassigned = -1
};
问题:与预处理器方法相比,这是否会对运行时性能造成影响?这是个坏主意吗?
没有运行时性能影响-编译器会知道在这两种情况下它们只是值-1
。
然而,我认为最好的方法是使用正确类型的常量。例如:
const int Unassigned = -1;
(当然,用int
替换您的实际类型)。
应该不会对性能产生影响。然而,为什么不只是const int Unassigned = -1
呢?
相关文章:
- 如何在编译时定义C++预处理器指令的值?
- 如何在 c++ 预处理器指令中使用 "#" 作为字符
- 有C++标准库 ifdef 或 ifndef 预处理器指令吗?
- 不能在预处理器指令中使用 printf
- ARMC6忽略预处理器指令
- 是否可以转换预处理器指令中的字符?
- 如何使用C++中的处理器指令来实现快速算术运算
- 用于在运行时选择变量的 C++ 预处理器指令
- 如何使用预处理器指令包含两次具有不同代码的文件?
- 将预处理器指令作为语句的一部分
- C++ 预处理器指令函数
- 如何在整个编辑中遵循预处理器指令
- Bullet Physics源代码未在X86中构建 - Visual Studio 2017中错误的预处理器指令
- 预处理器指令:为什么使用#Define的标题文件标识符与标头文件名不同
- 使用正则表达式筛选预处理器指令
- 该预处理器指令在这里可以接受
- 将使用预处理器指令来定义美元符号表示的内容会导致任何冲突
- 对测试单元使用预处理器指令的相关性
- C++单值枚举与预处理器指令
- 是否有任何预处理器指令控制循环展开