【发布时间】:2010-12-11 01:16:02
【问题描述】:
在之前的question 中,我认为好的答案被否决了,因为建议使用宏
#define radian2degree(a) (a * 57.295779513082)
#define degree2radian(a) (a * 0.017453292519)
而不是内联函数。请原谅新手的问题,但在这种情况下,宏有什么邪恶之处?
【问题讨论】:
-
在这种情况下, degree2radian(45 + a / 2.0) 并没有按照你的想法做。总是把展开式中的每一个论点都括起来——嗯,几乎总是;主要的例外情况是当您进行标记粘贴或字符串化等操作时。
-
乔纳森所说的 - 比看到一个由于所有该死的括号而阅读起来很痛苦的宏定义更糟糕的是,遇到一个没有所有这些该死的括号的宏定义.
-
宏也有 ALLCAPS 约定,至少将它们放入自己的伪命名空间中。