2011-06-09 44 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

是的,你可以。當預處理器遇到第二個聲明時,它將爲其分配原始宏的值。

這是在大多數每個框架的宏到別名時完成的。