使用編譯器指令時,我不清楚以下兩個代碼片段中的哪一個是正確的/首選的以及爲什麼。看來,我見過的大多數開發人員和開源項目都使用第一個,但我也看到了第二個頻繁使用的項目。#ifdef調試與#if調試
#ifdef DEBUG
[self doSomethingOnlyWhenDebugging];
#endif
VERSUS
#if DEBUG
[self doSomethingOnlyWhenDebugging];
#endif
這上面的代碼片段的最好運行代碼只在調試時,爲什麼?我的猜測是,如果DEBUG被定義爲TRUE或FALSE,第一個將運行,其中第二個只有在DEBUG被定義並設置爲TRUE時纔會運行。那是對的嗎?
'#ifdef'只是測試符號是否已被定義。'#if'測試符號的VALUE。所以'#define FOO 0'將使'#ifdef FOO'爲真,但'#if FOO'爲假,因爲它正在執行'#if 0'。 – 2013-04-26 21:43:46
您應該嘗試查找「根」定義並確定該值是打算成爲1/0值還是當前/不存在的值。讓他們錯誤可能會產生「意想不到的」後果。 – 2013-04-26 21:47:14