zar*_*zar 4 c++ coding-style c-preprocessor
我的小C++函数需要计算一个简单的超时值.
CalcTimeout(const mystruct st)
{
return (st.x + 100) * st.y + 200;
}
Run Code Online (Sandbox Code Playgroud)
数字100和200会让以后读取代码变得混乱,所以我想使用#define.但是这些定义只是仅用于此函数,我可以在函数内定义它们吗?这种方式的优点是:
缺点可能是定义类似局部变量/ const的相当粗略的方法,但它显然不是本地的.
除此之外,在C++函数中#define是否奇怪?大多数情况下,我们在文件顶部使用#defines.是否更好地使用const变量来替换像这样的固定本地硬编码值?
目标实际上是使代码更易读/可理解.
Mik*_*our 17
不要使用宏来定义常量; 使用常数.
const int thingy = 100; // Obviously, you'll choose a better name
const int doodad = 200;
return (st.x + thingy) * st.y + doodad;
Run Code Online (Sandbox Code Playgroud)
就像扩展为常量表达式的宏一样,这些宏可以被视为编译时常量.与宏不同,这些宏在函数中适当地限定范围.
如果你确实有理由定义一个仅在本地使用的宏,那么你可以使用#undef它来完成它后去除它.但总的来说,你应该避免使用宏(就像这里一样)有一个语言级别的构造可以做你想要的.