2
我有这样的宏:语义宏 - 分配之前的宏另一个
#define kPaxZoneW 105.0
我想定义后续宏,总是需要有相同的价值,但对语义的原因,需要有不同的名称。在之前的定义之后,我能否摆脱这种困境?
#define kPaxZoneAFA kPaxZoneW
这将确保kPaxZoneAFA将始终等于kPaxZoneW的值。
我有这样的宏:语义宏 - 分配之前的宏另一个
#define kPaxZoneW 105.0
我想定义后续宏,总是需要有相同的价值,但对语义的原因,需要有不同的名称。在之前的定义之后,我能否摆脱这种困境?
#define kPaxZoneAFA kPaxZoneW
这将确保kPaxZoneAFA将始终等于kPaxZoneW的值。
是;当你这样做时,任何使用kPaxZoneAFA
将首先被kPaxZoneW
替代,然后由105.0
替换。
是的,你可以。当预处理器遇到第二个声明时,它将为其分配原始宏的值。
这是在大多数每个框架的宏到别名时完成的。
完美,谢谢 – 2011-06-09 04:22:59
在一个侧面说明,预处理完成1遍,所以顺序是非常重要的...如果不是在同一个头文件中,您需要注意,它们始终包含在同一顺序中。 – Bruce 2011-06-09 05:25:56
@Bruce:只要两个宏在使用之前被定义,宏定义的顺序就无关紧要。宏替换是懒惰的。 – 2011-06-09 05:27:32