c++ - 我应该避免在 C++ 中使用#define 吗?为什么,我可以使用哪些替代方案?

标签 c++ c-preprocessor preprocessor-directive

对于某些类型的程序,我需要使用常量高值来指示某些变量的某些属性。我的意思是让 color[i] = 1000000; 如果树中的 i 节点未被探索。但是我经常把末尾0的个数写错,所以我想知道这样写是不是更好:

#define UNEXPLORED 1000000;
color[i] = UNEXPLORED;

我记得我在某处读到过避免使用#define 会好得多。这样对吗?你会如何解决这个问题?

最佳答案

对于简单常量,您可以使用 const 或新的 constexpr :

constexpr unsigned int UNEXPLORED = 1000000;

在这种情况下,使用constconstexpr 没有区别。但是,标记为 constexpr 的“变量”是在编译时而不是在运行时求值的,并且可以在原本只接受文字的地方使用。

关于c++ - 我应该避免在 C++ 中使用#define 吗?为什么,我可以使用哪些替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15218760/

相关文章:

c++ - 如何在另一个 C++ 程序中使用预处理的 .i 文件?

c++ - 编译同一类的两个不同实现

c++ - 从 C++ 应用程序查询堆

c++ - 文件系统项目 "Member access into incomplete type"错误

c++ - 由带节点的链表组成的类似 STL 的列表

c++ - 新的 __LINE__ 什么时候开始?

c++ - C宏是隐式转换的吗?

c# - 无平台网络的预处理器符号

c++ - 可以在 C/C++ include 指令中使用环境变量吗?

c++ - 像真正的风力涡轮机一样旋转物体