1

Xcode 4.3.3 で新しい cocoa プロジェクトを作成しました。Apple LLVM コンパイラ 3.1 設定のプリプロセッサ マクロには、DEBUG=1 $(inherited) 値が割り当てられています。削除して再度追加したところ、コンパイル時にエラーが発生しました:

clang: エラー: そのようなファイルまたはディレクトリはありません: 'DEBUG=1'

プロジェクト設定で値を検索すると、値が「その他の警告フラグ」でも定義されていることがわかりました

私の質問は次のとおりです。

  1. DEBUGvsを持つだけの違いは何DEBUG=1ですか?
  2. 何をし$(inherited)ますか?
  3. 他の警告フラグでも何をしていますか?
4

1 に答える 1

1

まず、コンパイルエラーが発生した場合は、プロジェクト設定の誤った場所にマクロを戻す可能性があります。セクションの下のアイテムのDebug構成ブランチにそれを入れたことを確認してください。Preprocessor MacrosApple LLVM compiler x.x - Preprocessing

その他の質問:

  1. 最初のバージョンはマクロを定義するだけDEBUGなので、基本的に空です。存在するか存在しないかをテストできますが、それほど多くはありません。2つ目は1、プリプロセッサが実際に#if DEBUG && SHOULD_DIE_ON_ERROR、アプリケーションで検証エラーが発生した場合に中止する可能性がある場所などの比較を実行できるようにSHOULD_DIE_ON_ERROR設定します。ただし、が設定され1ていて、デバッグモードで実行している場合に限ります。
  2. チェーンの$(inherited)さらに上流から継承している他のマクロを取り込むだけです。したがって、プロジェクトでいくつかの項目が定義され、ターゲットでさらにいくつかの項目が定義されている場合、ターゲットはプロジェクトの設定も再定義せずに取得します。
  3. 警告フラグにはまったく影響しないはずです。どちらかといえば、インクルードするヘッダーファイル(cocoaフレームワークなど)のコードパスを決定します。これは、さまざまな実装を使用したり、データ構造にデバッグ情報を追加したりする場合があります。
于 2012-07-06T23:45:22.637 に答える