簡體   English   中英

C ++宏說明

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM