0

#if および #endif 内でコード補完が機能しない

環境: 最新の Xcode バージョン: 4.6.2

#if defined(LITE_VERSION)

  //code here has no or very limited auto completion

#endif

ターゲットはライト バージョンに設定されているため、マクロ LITE_VERSION は実際には既に定義されています。

派生データはすべて手動で削除しました。(ちなみに、この特定のプロジェクトの主催者のウィンドウでは、派生データの削除ボタンは灰色です)

ソース コードに #define LITE_VERSION を追加するだけで、コード補完が機能します。ただし、それは汚い修正であり、エラーが発生しやすいと思います。

この問題は、Xcode のさまざまなバージョンで 1 年以上持続しており、現在、ライト バージョン用に記述するコードがますます増えています。恒久的な解決策に本当に感謝しています。

PS: この質問を書いている間もトラブルシューティングを続け、最終的に解決策を見つけたので、これを自問自答の質問にしました。うまくいけば、それは他の人を助けるでしょう。

4

1 に答える 1

1

編集: Apple はこれをバグとして確認しています。

編集:コード補完はしばらく機能し、その後機能を停止します。本当に奇妙です。

元の答え:

やっと本当の原因がわかった。

ライト バージョン用に定義したマクロは実際のコンパイルでは機能するようですが、エディターではマクロが機能しません。

そこで、ビルド設定でマクロの定義を確認し、xcode でマクロを定義する正しい方法をグーグルで調べました。このリンクは本当に役に立ちます。

つまり、マクロ設定を以下から変更しました。 ここに画像の説明を入力

に:

ここに画像の説明を入力

そして、派生データを再度クリーンアップすると、機能するようになりました!

これは、GCC 設定から LLVM 設定への変換に関係している可能性があります。

于 2013-07-07T10:27:10.880 に答える