像M_PI
这样的宏非常有用,但它将其值定义为double
。当它用作浮点数时,你不能写M_PIf
,因为这显然会改变宏的名称。
如何将文字附加到宏?
答案 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
会让读者更清楚。