e2_studioのプリプロセッサ機能について

e2_studioを使用して、RXマイコンの開発をしています。

FITがつかえて便利なのですが、よくわからないことがあります。

コンパイルは問題なくできるのですが、#ifdef文で有効にしている場所がエディタでグレー表示になってしまうことがあります。 

依存関係更新や、クリーンをしても変わらないので、現状ではあきらめているのですが、腑に落ちません。

どなたか、解決方法をご存じではありませんでしょうか。

Parents
  • khiraoka5さん、こんにちは。NoMaYと申します。

    もし、Okamiya Yuukiさんのリプライで解決しないようでしたら、以下の画面コピーを見せて頂けないでしょうか? (社外秘にしたい箇所があればWindows標準ツールのペイント等で削ってしまって下さい。)

    (1) #ifdef文で有効にしている場所がエディタでグレー表示になっているところのe2 studioの画面コピー

    (2-A) その#ifdef文で判別しているシンボルが#defineされているソースのe2 studioの画面コピー
    又は
    (2-B) そのシンボルがコンパイルオプションによる定義であれば設定している箇所のe2 studioの画面コピー

  • khiraoka5さん、こんにちは。NoMaYです。

    よくわからない状態なので保留しています、とのことですが、別スレッドへの自分の投稿で昔を思い出していた時に記憶が甦って来たのですが、この手の誤動作はe2 studio(というかEclipse/CDT)の実装が以下のようになっているからでは無いだろうかと仮説を立てて調べようとしていたことがありました。(当時は確信には至りませんでした。) この後、昔を思い出して、少し調べてみます。

    ・一度解析したヘッダファイルの解析結果はキャッシュされているのでは?
    ・そして同名のヘッダファイルに遭遇したらキャッシュの内容が使用されるのでは?
    ・ところがヘッダファイルの名前しか管理していないので以下の状況で混乱が起きるのでは?
    (1) 異なるパスに同名で内容の異なるヘッダファイルがある
    (2) ファイルがインクルードされる順番に依存してヘッダファイルの実質的な内容が微妙に変わる
    (3) 同一プロジェクトでもcppファイルにインクルードされる時とcファイルにインクルードされる時がある
    (4) ワークスペースにデファイン定義のコンパイルオプションが異なる複数のプロジェクトがある
    ・キャッシュされた内容は何らかのタイミングで破棄されるものである(それがキャッシュというもの)
    ・このことと上に書いた混乱が組み合わさると以下のようなことまで起きるかも知れない?
    (5) 別のファイルを編集しているうちにエラーが現れたり消えたりすることがある?
    (6) 編集ウィンドウでファイルを閉じて開くだけでもエラーが現れたり消えたりすることがある?

    とか、、、

Reply
  • khiraoka5さん、こんにちは。NoMaYです。

    よくわからない状態なので保留しています、とのことですが、別スレッドへの自分の投稿で昔を思い出していた時に記憶が甦って来たのですが、この手の誤動作はe2 studio(というかEclipse/CDT)の実装が以下のようになっているからでは無いだろうかと仮説を立てて調べようとしていたことがありました。(当時は確信には至りませんでした。) この後、昔を思い出して、少し調べてみます。

    ・一度解析したヘッダファイルの解析結果はキャッシュされているのでは?
    ・そして同名のヘッダファイルに遭遇したらキャッシュの内容が使用されるのでは?
    ・ところがヘッダファイルの名前しか管理していないので以下の状況で混乱が起きるのでは?
    (1) 異なるパスに同名で内容の異なるヘッダファイルがある
    (2) ファイルがインクルードされる順番に依存してヘッダファイルの実質的な内容が微妙に変わる
    (3) 同一プロジェクトでもcppファイルにインクルードされる時とcファイルにインクルードされる時がある
    (4) ワークスペースにデファイン定義のコンパイルオプションが異なる複数のプロジェクトがある
    ・キャッシュされた内容は何らかのタイミングで破棄されるものである(それがキャッシュというもの)
    ・このことと上に書いた混乱が組み合わさると以下のようなことまで起きるかも知れない?
    (5) 別のファイルを編集しているうちにエラーが現れたり消えたりすることがある?
    (6) 編集ウィンドウでファイルを閉じて開くだけでもエラーが現れたり消えたりすることがある?

    とか、、、

Children
  • NoMaY様
    ありがとうございます。
    自然に治ることがあるというか、出たりでなかったりするので、とりあえずコンパイルは正常ですし、
    動作はするのであきらめていました。
  • khiraoka5さん、こんにちは。NoMaYです。

    私がこちらに投稿した以下のインデクサー設定にするとどうなるでしょうか?

    有効にするインデクサーオプション:
    Index all header variants

    無効にするインデクサーオプション:
    すべてのファイルに索引付け
    未使用のヘッダーを索引付け (これはデフォルトで無効ですが)
    Allow heuristic resolution of includes