インテリセンスが効かない場合の対処方法(おいらの場合)
おいらがメインで利用している Visual Studio は VS2003 なんですが、この子はインテリセンスがちょぃと弱いので*1^^;、My共有ライブラリちっくな物は VC2008EE でライブラリ開発プロジェクトを新規に作りそこでコーディング。 納得いく形になったら主開発プロジェクトの VS2003 に持って行ってー……とか、そんなことしてます。 VS2003 は軽くていいのじゃよー
でまぁ、共有ライブラリ部のコーディングしてた今日この頃なのですが、ある時までは確りとインテリセンスが効いていたのですが、つい先日から効かなくなってしまった………
正確には、関数一覧とかは出てくるも、"(" を入力した時に引数のヒントが出てこなくなるという現象に見舞われました。 なんじゃこの微妙な状況はー
というわけで、でなくなる原因を探って問題を解決してみました。
注意! これはあくまで可決方法の一例です。 間違いなくこれ以外にもでなくなるケースがあります。 その時は自分で問題点を探りましょう :-]
enum の要素の初期値に INT_MIN を利用していて死亡
enum Rozen { GIN = INT_MIN, // ココで死亡 KIN, SUI, };
// 解決方法 const int INT_MIN_ = INT_MIN; enum Rozen { GIN = INT_MIN_, // OK KIN, SUI, };
INT_MIN なマクロを指定しちゃうと死んでしまうので、一段かましてみたところインテリセンスが動作するようになりました。
stdafx.h が見えて無くて死亡
ディレクトリ階層が次のようになっていたとして、MyClass.cpp の 頭に #include "stdafx.h" があったとしましょう。
+ プロジェクトRoot + 主プロジェクト | + 色々... | + ライブラリ開発プロジェクト | + ライブラリ開発.vcproj | + stdafx.h | + ライブラリコード + MyClass.cpp + MyClass.h
// MyClass.cpp #include "stdafx.h" : :
この状態で ライブラリ開発プロジェクト の stdafx.h なんざ見えるわけ無いのに VC だとビルドできてしまうわけですけれども(ぉ)、インテリセンス的には #include 先が見えてないのかしらー…と思い、プロジェクトの設定で次の設定を追加してみたところ、あっさり動作するようになりました。
追加のインクルードディレクトリ → . (ピリオド1個)
そうかー、1byte で問題解決かー… そうかー、1ドットで問題解決かー……
はは…はははっ…
以上、VC2008EE におけるおいらの解決例でした。 お試しあれ
*1:VC6に比べればすごい進化ではあった!