如何附加到C ++预处理器宏?

时间:2014-04-29 08:34:17

标签: c++ macros c-preprocessor

M_PI这样的宏非常有用,但它将其值定义为double。当它用作浮点数时,你不能写M_PIf,因为这显然会改变宏的名称。

如何将文字附加到宏?

4 个答案:

答案 0 :(得分:4)

你不能(至少不涉及更多的宏)。

如果您喜欢冗长,可以写float(M_PI)static_cast<float>(M_PI)

答案 1 :(得分:2)

你不能。每个宏都有一个单独的定义,你不能只为它添加一个f。当然,作为替代方案,您总是可以使用第二个宏,即以f。

结尾的版本

你不应该这样做,无论如何。不要使用宏来定义数字常量。使用常量。他们的类型安全,可读且高效。他们拥有您需要的一切,没有任何缺点。

答案 2 :(得分:1)

#define CONCATENATE_DETAIL(x, y) x##y
#define CONCATENATE(x, y) CONCATENATE_DETAIL(x, y)

CONCATENATE(M_PI,f)

这比浮点数(M_PI)更详细,但并不总是有效。

答案 3 :(得分:0)

您定义另一个宏:

#define M_PI_F M_PI##f

虽然(float)M_PI会让读者更清楚。