2011-06-09 42 views
2

我有这样的宏:语义宏 - 分配之前的宏另一个

#define kPaxZoneW 105.0 

我想定义后续宏,总是需要有相同的价值,但对语义的原因,需要有不同的名称。在之前的定义之后,我能否摆脱这种困境?

#define kPaxZoneAFA kPaxZoneW 

这将确保kPaxZoneAFA将始终等于kPaxZoneW的值。

回答

2

是;当你这样做时,任何使用kPaxZoneAFA将首先被kPaxZoneW替代,然后由105.0替换。

+0

完美,谢谢 – 2011-06-09 04:22:59

+0

在一个侧面说明,预处理完成1遍,所以顺序是非常重要的...如果不是在同一个头文件中,您需要注意,它们始终包含在同一顺序中。 – Bruce 2011-06-09 05:25:56

+1

@Bruce:只要两个宏在使用之前被定义,宏定义的顺序就无关紧要。宏替换是懒惰的。 – 2011-06-09 05:27:32

2

是的,你可以。当预处理器遇到第二个声明时,它将为其分配原始宏的值。

这是在大多数每个框架的宏到别名时完成的。