假设我有一个想要除去的魔法数字
...
//whatever.cpp
for (int i = 0; i < 42; i++)
{
//...
}
我可以用两种方法来解决这个问题:
在源代码的.cpp
文件中,可以使用const int SOMETHING_SOMETHING_MEANING_OF_LIFE = 42
或者使用constexpr int SOMETHING_SOMETHING_MEANING_OF_LIFE = 42
在这种情况下,这两种方法是否有任何有意义的区别(我记得编译器会推断出 - 无论使用哪种方法 - 值不会改变,因此在生成的循环/展开的循环/任何机器代码中,42
实际上是硬编码的),还是只是个人口味的不同?
在一个相关的问题上:如果magic number
(因此替换它的东西)在头文件(.h
)中声明而不是在源文件(.ccp
)中声明,那么这会改变什么(如果有的话,怎么改变)?