2011-07-18 43 views
1

預處理消息宏我還沒有需要之前多用預處理宏,和整個網絡上此位的代碼來:需要幫助理解XCode中

#ifndef LITE_VERSION 
    #ifndef FULL_VERSION 
     #error 
    #endif 
#endif 

這樣做的目的是警告如果LITE或FULL未被聲明。我放棄了我的Prefix.pch文件,並收到#error語句的警告。

我試圖改變錯誤:

#pragma message("some text") 

雖然這將編譯,則不會顯示任何文本(我可以看到)。

我還沒有宣佈LITE或FULL,所以我想知道爲什麼這不起作用。

+1

剛纔你的問題是什麼? LITE_VERSION/FULL_VERSION未定義時,您是否希望看到#error消息?如果你不那麼你應該拿出整個宏。如果您使用最新版本的XCode,則應用程序會在調試控制檯中顯示警告。 – Perception

+0

其實,我只是想在建立時發出警告,而不是錯誤... – TigerCoding

回答

4

這應該是:

#pragma message "some text" 

或者,如果你願意,你可以使用這個:

#pragma message ("some text") 

http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html

通常我使用略有不同的做法:

#if defined(LITE_VERSION) 
    ... 
#elseif defined(FULL_VERSION) 
    ... 
#else 
#error "Must define LITE_VERSION or FULL_VERSION" 
#end 
+0

哦,等一下,我覺得很傻。我認爲這隻會在控制檯上放置一條警告消息,實際上會產生阻止構建的錯誤。 =) – TigerCoding

+0

奇怪的是,#pragma消息「some text」在控制檯上沒有顯示任何內容...... – TigerCoding

+0

您是否查看過整個構建輸出?我希望它在那裏。請注意,在我上面的例子中,我有意使用#error來破壞構建。否則,你會愉快地奔跑,而不是挖掘每一行構建輸出。我相信的同樣原因 - 錯誤。停止構建是您獲得開發人員關注的方式。 –

1

它應該像以前一樣使用錯誤。只需添加一個消息,並建立

#ifndef LITE_VERSION 
    #ifndef FULL_VERSION 
     #error "Neither Lite or Full version has been defined" 
    #endif 
#endif