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

gen*_*gen 3 c++ c-preprocessor preprocessor-directive

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

#define UNEXPLORED 1000000;
color[i] = UNEXPLORED;
Run Code Online (Sandbox Code Playgroud)

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

Som*_*ude 5

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

constexpr unsigned int UNEXPLORED = 1000000;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用const和之间没有区别constexpr。但是,标记的“变量”constexpr是在编译时而不是在运行时计算的,并且可以在只接受文字的地方使用。