C/C++ プロジェクトで作業するときに IntelliSense を確実に動作させる方法を知っている人はいますか? 10個中1個程度のファイルで動作するようです。Visual Studio 2005 は 2008 よりもはるかに優れているようです。
編集:必ずしも解決策ではありませんが、ここで提供される回避策:
Visual Studio 2008 で IntelliSense を確実に動作させる方法
まともな IntelliSense システムが必要な場合は、おそらく最善の策です。
C/C++ プロジェクトで作業するときに IntelliSense を確実に動作させる方法を知っている人はいますか? 10個中1個程度のファイルで動作するようです。Visual Studio 2005 は 2008 よりもはるかに優れているようです。
編集:必ずしも解決策ではありませんが、ここで提供される回避策:
Visual Studio 2008 で IntelliSense を確実に動作させる方法
まともな IntelliSense システムが必要な場合は、おそらく最善の策です。
ネイティブ C++ インテリセンスは、どのバージョンの Visual Studio でも確実に機能しません。2 つの一般的な問題があることがわかりました。
1) ヘッダー ファイルのパスが正しく設定されていません。IntelliSense が機能していない型を見つけたら、IDE を使用して各ヘッダー ファイルをクリックし、その型を含むファイルを見つけます。(#include を右クリックし、[ドキュメントを開く...] を選択します)。タイプを宣言するファイルに到達する前にこれが失敗した場合、これが問題です。ヘッダー ファイルの検索パスが正しく設定されていることを確認してください。
と、
2) インテリセンス データベースが壊れています。これは常に起こります。ソリューションを閉じ、.ncb ファイルを削除してから、ソリューションを再度開く必要があります。ここで別の質問に答えて、これに使用するマクロを投稿しました。
プリプロセッサも intellisense を混乱させる可能性があるため、ビルド中の #define が intellisense でも利用できることを確認してください。それ以外に、他に何がそれを壊すことができるのかわかりません。前方宣言に関する特定の問題は見たことがありません。
また、大きなプロジェクトで、Intellisense が「失われる」ことがあるということにも気付きました。なんで?わかりません。
これが、( Tomato ソフトウェアから) Visual Assistを購入し、Visual Studio サブディレクトリ (C:\Program Files\Microsoft Visual Studio 8\VC\vcpackages) の dll feacp.dll を削除して Intellisense を無効にした理由です。
これは解決策ではなく、単なる回避策です。
Visual Assist を入手できない私たちに希望が見えてきたようです。
アドインをインストール (またはアンインストール) していますか? それが私のインテリセンスに影響を与えることがわかりました。
それに加えて、ツール->オプション->テキストエディター->すべての言語の「自動リストメンバー」と「パラメーター情報」がチェックされていることを確認してください。
そのひどいリファクタリングユーティリティが私のコードを切り刻んだ後、 itellisense への私の修正が必要でした。問題は、それ自体の #include を含むクラス ヘッダー ファイルでした。再帰参照は itellisense を破壊します。この症状は、itellisense が他のクラスを認識できるが、現在のクラスを認識できない場合です。また:
#pragma once を使用して、ヘッダーの重複ロードを排除します
プロジェクトの読み込みに非常に長い時間がかかるようになった場合、その itellisense は原因となっている競合を理解しようとしており、完了サポートが不足しています。
多くの場合、影響を受けるのは 1 つのクラス オブジェクトだけです。これにより、どのファイル (通常はヘッダー) を調べる必要があるかがわかります。
私は C++ には VS2008 を使用せず、VB と C# のみを使用しますが、インテリセンスが機能しなくなった場合 (VS2003/2005/2008 の場合)、プロジェクト/ファイル内の何かが壊れていることが原因であることがわかりました - 通常は参照またはコードが間違っています。
VB と C# は、参照されたアセンブリを反映して IntelliSense ツリーを構築できるため、IntelliSense サポートがはるかに優れています。
C++ は関数プロトタイプのインクルード ファイルをたどる必要があり、パスが正しくない場合、すべてのプロトタイプ ヘッダーが検出されません。
私は非常に厄介な問題を抱えていました.intellisenseはいくつかのファイルでしか機能していませんでしたが、明確な理由はありませんでした.Googleを掘り下げるのに数時間かかりました. 私は以下を使用していました:
#ifndef CLASS_H
#define CLASS_H
...
#endif
シンボルの再定義を避けるために、これは大規模なプロジェクトでインテリセンスを壊すことがあります。
しかし、ifndef-define-endif をコメントして、次のように入力するだけで十分です。
#pragma once
再定義を回避し、Intellisense が再び機能するようにヘッダー ファイルの先頭に =)=)
少なくとも、これは私にとってはうまくいきました。役に立つことを願っています...
乾杯フランチェスコ
私のインクルードは正しくセットアップされており、問題はありません。NCB の再構築も何度か試みましたが、100% 修正されることはありません。
クラスの前方宣言に関係している可能性があると感じています。たとえば、ヘッダー ファイルのインクルードの複雑さを軽減するために、通常は次のようにします。
class MyPredeclared;
class SomeOtherClass
{
private:
MyPredeclared* m_pPointer;
}
それはそれを台無しにするのだろうか?他のアイデアはありますか?プロジェクトが大きくなればなるほど、それは間違いなく悪化します。
私は最近、VS2008 で Intellisense を研究しました。これは、テンプレートなどが広く使用されている、かなり大規模な C++ 数値線形代数ライブラリを開発しているためです。Intellisense はプロジェクトの開始直後に機能しなくなり、私はちょっとあきらめましたが、今ではそれがないと本当に面倒になったので、調査することにしました。これは私が見つけたものです:
Intellisense を「壊す」コードを含むファイルがあると仮定すると、
#include
d ではない場合、残りのファイルでは引き続き機能します。#if 0
、/* .. */
または//
Intellisense を安心させるようです私が使用した C++ 機能から、実際に Intellisense を壊すのはごくわずかです。
static_assert<(size > 0)>
)
static_assert<((size > 0))>
ない ( 役に立たない)static_assert<0 < size>
動作)function<type>(args)
)
Matrix::MakeMatrixType<3, 3>::Result r;
これらの問題のいくつかは、適切な C++ パーサーよりも強力ではない「単純化された」構文解析によるものと思われます。上記の情報が手元にあれば、既存のコードで Intellisense を機能させる "信頼できる" 方法は次のとおりです。
void main() {}
。math.h
sin(
、引数のヘルプが表示されるかどうかを確認します。場合によってはこれでうまくいくこともありますが、メンバーのヘルプはうまくいかないので、それも試してみてください。この方法で、問題が発生したコードの場所を特定するのは簡単であることがわかりました (私の場合、問題が発生したのは 97 ファイル中 1 ファイルだけでした)。ここでの「ビルド」はコンパイルを指します。リンク段階は終了する必要がないため、未解決の外部は問題ありません。IS は関係なく更新する必要があります。
IS を更新する別の方法 (ビルド以外) は、すべてを保存し、ワークスペースを閉じ、.ncb ファイルを削除してから再度開くことです。次に、「Intellisense を更新しています ... (N)」がステータス バーから消えるまで待ちます (N はゼロに向かってカウントされます。完全に進まない場合は、問題が発生した場所の進行状況を示します)。これはかなり面倒だと思いました。
この問題について、興味深いことに気付きました (Visual Studio 2010 で): この問題を解決するため#include
に、以前はヘッダー ファイルのシンタックスを変更しました (古いプロジェクトは VS 2005 で行われ、VS 2010 を使用して再度開かれました):
#include <myfile.h>
そして私はこれを修正します:
#include "myfile.h"
インテリセンスが正しく機能し始めた後!これが役立つことを願っています!
設定をやり直す必要がありました...
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE>devenv.exe /ResetSettings