2011-07-18 2 views
1

にプリプロセッサメッセージマクロを理解する助けが必要LITEまたはFULLのいずれかが宣言されていない場合これを私のPrefix.pchファイルにドロップして、#errorステートメントで警告が表示されます。は、私はずっと前にプリプロセッサマクロを使用する必要があったが、ウェブ上でコードのこのビットに出くわしていないXCodeの

私はエラーを変えてみました:

#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 message "some text"はコンソールに何も表示されません... – TigerCoding

+0

ビルド出力全体を表示しましたか?私はそれがそこにあることを期待する。上記の例では、ビルドを中断する目的で#errorを使用しています。そうでなければ、あなたは喜んで一緒に走り、ビルドアウトプットのすべてのラインを掘り下げません。私が信じているのと同じ理由 - 失敗。ビルドを止めることは、開発者の注意を引く方法です。 –

1

以前と同じようにエラーが発生するはずです。ただ、メッセージを追加し、

#ifndef LITE_VERSION 
    #ifndef FULL_VERSION 
     #error "Neither Lite or Full version has been defined" 
    #endif 
#endif 
関連する問題