none
#ifdef 内がグレーアウトされるのを無効にしたい RRS feed

  • 質問

  • Visual Studio 2003 から Visual Studio 2005 に入れ替えました。

    プロジェクトをいくつかの構成に分け、#ifdefで処理を分けているのですが、
    プリプロセッサの定義をソース上ではなく、
    プロジェクトの構成プロパティ→C/C++→プリプロセッサ
    で定義しているせいか、
    エディタ上ではグレーアウトされ、インテリセンスが効きません。

    アクティブな構成のプリプロセッサを有効にする方法、または、
    #ifdefで対象外となったソースを無効化しないようにする方法を
    ご存知の方がいらしたら、ご教示ください。
    2008年10月28日 2:57

回答

  • 2008でしかテストできませんでしたが。

    1.「構成」でも「ソース上」でも効果は変わりませんが、

      コンパイルしないと設定は検知されないようです。

    2.「グレーアウト」自体は「ツール」の「オプション」で

      取り消せますが、「アクティブでない」状態は変えられない

      ようです。

     

    いっそ、#define毎の構成を構成マネージャで作ってしまうのが

    簡単かもしれません。

    2008年10月28日 4:50

すべての返信

  • 2008でしかテストできませんでしたが。

    1.「構成」でも「ソース上」でも効果は変わりませんが、

      コンパイルしないと設定は検知されないようです。

    2.「グレーアウト」自体は「ツール」の「オプション」で

      取り消せますが、「アクティブでない」状態は変えられない

      ようです。

     

    いっそ、#define毎の構成を構成マネージャで作ってしまうのが

    簡単かもしれません。

    2008年10月28日 4:50
  • ご回答ありがとうございます。
    こんなに早く返事が頂けてうれしいです。

    わざわざ試して頂いたのですね。恐縮です。
    残念ながら、すでに構成マネージャで管理していて、全構成において
    ビルドも通っています。。。
    2005上でだけの現象なのかもですね。
    時間のある時に2008で試してみたいと思います。

    2008年10月28日 10:10
  • え~と、もしかして*.ncb問題ですかねぇ。

    *.ncb を手動で削除して、全コンパイルは

    やってみましたか?。

    2008年10月29日 1:31
  • こんにちは。中川俊輔 です。

     

    仲澤さん、回答ありがとうございます。

     

    なんてんさん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    有用な情報と思われたため、仲澤さんの回答へ回答済みチェックをつけさせていただきました。

    追加の質問等ありましたら、ぜひ投稿してみてください!

     

    今後もフォーラムをよろしくお願いします。

    それでは!

    2008年11月6日 0:55
  • 仲澤@失業者 さま

    VisualStudio2008をインストールしたので、同じプロジェクトを変換してみました。

    結果、出来ました。
    まだビルドエラーが取れない状態ですが、一度ビルドした後、IntelliSenseが更新されると、
    #ifdefの有効・無効が正しく表示されました。

    結局、VisualStudio2005の不具合ということですかね。


     仲澤@失業者 さんからの引用

    え~と、もしかして*.ncb問題ですかねぇ。

    *.ncb を手動で削除して、全コンパイルは

    やってみましたか?。



    新たなアドバイスを頂いていたのに気付かず、申し訳ありません。
    VSSから新しい環境に落として、全ビルドを何度もやっているのであり得ない、と思いつつ、
    万が一と思い、やってみましたが、結果は変わりませんでした。

    残念な結果になりましたが、色々アドバイスありがとうございました。

    2008年11月19日 4:33