[英]C++ macros explanation
有人可以解釋以下代碼嗎?
#if 1
// loop type
#define FOR_IS_FASTER 1
#define WHILE_IS_FASTER 0
// indexing type
#define PREINCREMENT_IS_FASTER 1
#define POSTINCREMENT_IS_FASTER 0
#else
// loop type
#define FOR_IS_FASTER 1
#define WHILE_IS_FASTER 0
// indexing type
#define PREINCREMENT_IS_FASTER 0
#define POSTINCREMENT_IS_FASTER 1
#endif
#if PREINCREMENT_IS_FASTER
#define ZXP(z) (*++(z))
#define ZX(z) (*(z))
#define PZ(z) (++(z))
#define ZP(z) (z)
#define ZOFF (1)
#elif POSTINCREMENT_IS_FASTER
#define ZXP(z) (*(z)++)
#define ZX(z) (*(z))
#define PZ(z) (z)
#define ZP(z) ((z)++)
#define ZOFF (0)
#endif
我可以理解這些功能在做什么,但是例如,如果以后調用它,預處理器將如何選擇將執行哪個ZXP? 1和0代表什么?
#if 1
觸發第一組#define
,這將PREINCREMENT_IS_FASTER設置為1。因此, #if PREINCREMENT_IS_FASTER
觸發第一組#define ZXP...
在這種情況下,1和0沒有什么例外。 如果其參數為非零,則#if
預處理器指令成功。
您可以通過將文件頂部的#if 1
更改為#if 0
來切換到其他形式。 (謝謝@rabidmachine的提示。)
我可能傾向於同意UncleBens並建議這樣做,以使您不理解它,因為整個過程完全沒有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.