So erhalten Sie IntelliSense, damit es in Visual Studio 2008 zuverlässig funktioniert

Lesezeit: 5 Minuten

Benutzeravatar von Mark Ingram
Markus Ingram

Weiß jemand, wie man IntelliSense dazu bringt, zuverlässig zu arbeiten, wenn man in C/C++-Projekten arbeitet? Es scheint für etwa 1 von 10 Dateien zu funktionieren. Visual Studio 2005 scheint viel besser zu sein als 2008.

Bearbeiten: Obwohl dies nicht unbedingt eine Lösung ist, wird hier die Problemumgehung bereitgestellt:

So erhalten Sie IntelliSense, damit es in Visual Studio 2008 zuverlässig funktioniert

Ist wahrscheinlich die beste Wahl, wenn ich ein anständiges IntelliSense-System haben möchte.

Benutzeravatar von John Richardson
John Richardson

Natives C++-IntelliSense funktioniert in keiner Version von Visual Studio zuverlässig. Ich finde, es gibt zwei häufige Probleme:

1) Header-Dateipfade sind nicht korrekt eingerichtet. Wenn Sie einen Typ finden, bei dem Intellisense nicht funktioniert, verwenden Sie die IDE, um durch jede Header-Datei zu klicken, um diejenige zu finden, die den Typ enthält. (Klicken Sie mit der rechten Maustaste auf #include und wählen Sie Dokument öffnen…). Wenn dies fehlschlägt, bevor Sie zu der Datei gelangen, die den Typ deklariert, dann ist dies Ihr Problem. Stellen Sie sicher, dass die Suchpfade für Header-Dateien korrekt eingerichtet sind.

Und,

2) Die Intellisense-Datenbank ist beschädigt. Das passiert die ganze Zeit. Sie müssen die Lösung schließen, die .ncb-Datei löschen und die Lösung dann erneut öffnen. Ich habe das Makro, das ich dafür verwende, als Antwort auf eine andere Frage hier gepostet.


Der Präprozessor kann auch Intellisense verwirren – stellen Sie also sicher, dass alle #defines während des Builds auch für Intellisense verfügbar sind. Ansonsten wüsste ich nicht was da noch kaputt gehen kann. Ich habe keine besonderen Probleme mit Vorwärtsdeklarationen gesehen.

  • Das ist eine hilfreiche Lösung, um die NCB-Datei zu löschen. 🙂

    – sn3ek

    6. Oktober 2009 um 18:57 Uhr

  • Hinweis: Intellisense wurde in VS2010 behoben.

    – Billy ONeal

    5. Dezember 2010 um 17:19 Uhr

  • Verdammt, Microsoft! Ich habe 544 #includes in diesem Projekt (ohne die darin verschachtelten #includes und unzählige #defines zu zählen). Danke an das Plakat für die Idee.

    – c00000fd

    25. November 2013 um 0:08 Uhr

  • +1 Das Löschen der sdf (die neue Erweiterung von VS2010 für das, was ncb in ’08 war) hat bei mir funktioniert. Ich habe die VS-Lösung geschlossen, die SDF-Datei der Lösung gelöscht, die Lösung erneut geöffnet, die Lösung neu erstellt und voila.

    – John

    9. Dezember 2013 um 19:55 Uhr


Benutzeravatar von Steve Gury
Steve Gury

Ich habe auch festgestellt, dass Intellisense bei einem großen Projekt manchmal “verloren” geht. Wieso den? Keine Ahnung.

Aus diesem Grund haben wir gekauft Visuelle Unterstützung (aus Tomaten-Software) und deaktivierte Intellisense durch Löschen der dll feacp.dll im Visual Studio-Unterverzeichnis (C:\Programme\Microsoft Visual Studio 8\VC\vcpackages)

Das ist keine Lösung, sondern nur ein Workaround.

  • +1 zum Deaktivieren des Intellisense. Die Makros, die ich 2005 zum Deaktivieren verwendet habe, funktionierten 2008 nicht mehr.

    – Sturmnetz

    8. November 2010 um 9:30 Uhr

  • Ich habe an anderer Stelle gelesen, dass das Löschen dieser DLL vorsichtig gehandhabt werden sollte, das Erstellen eines Ordners mit dem Namen “Solutionname.ncb” sollte bevorzugt werden. Führt aber bei jedem Start zu lästigen Fehlermeldungen. Und +1 für die Erwähnung von VAX.

    – SvenS

    2. März 2012 um 11:27 Uhr

  • Dies ist ab VS2010 immer noch ein guter Rat, da Intellisense in VS2010 sehr langsam ist (obwohl es jetzt möglich ist, Intellisense über die Konfigurationsseite in VS zu deaktivieren).

    – Benj

    26. März 2012 um 13:03 Uhr

Benutzeravatar von Nick McCowin
Nick McCowin

Es sieht so aus, als gäbe es Hoffnung am Horizont für diejenigen von uns, die Visual Assist nicht erhalten können:

Neuerstellung von Intellisense

  • Aber keine Unterstützung für C++/CLI in der ersten Version von VS2010 :/

    – Dämonencodeaffe

    1. Juli 2009 um 9:49 Uhr

Benutzeravatar von Sara Chipps
Sara Chipp

Hast du irgendwelche Add-Ins installiert (oder deinstalliert)? Ich finde, das wirkt sich auf meinen Intellisense aus.

Stellen Sie außerdem sicher, dass Ihre Tools->Optionen->Text-Editor->Alle Sprachen “Mitglieder automatisch auflisten” und “Parameterinformationen” abgehakt sind.

Ich verwende VS2008 nicht für C++, nur VB & C#, aber ich finde, wenn Intellisense nicht mehr funktioniert (gilt für VS2003/2005/2008), liegt es daran, dass etwas im Projekt/in der Datei kaputt ist – normalerweise eine schlechte Referenz oder ein schlechter Code.

VB und C# haben eine viel bessere Intellisense-Unterstützung, da sie die referenzierten Assemblys reflektieren können, um den Intellisense-Baum zu erstellen.

C++ muss die Include-Dateien für Funktionsprototypen durchlaufen, und wenn die Pfade nicht korrekt sind, findet es nicht alle Prototyp-Header.

Mein Fix für itellisense war erforderlich, nachdem dieses schreckliche Refactor-Dienstprogramm meinen Code zerhackt hatte. Das Problem war eine Klassen-Header-Datei, die ein #include von sich selbst enthielt. Der rekursive Verweis zerstört itellisense. Ein Symptom dafür ist, wenn itellisense andere Klassen sehen kann, aber nicht die aktuelle. Ebenfalls:

Verwenden Sie einmal #pragma, um doppelte Header-Loads zu vermeiden

Wenn das Projekt jetzt sehr viel länger zum Laden benötigt, versucht itellisense, den Konflikt zu verstehen, der dann die fehlende Unterstützung für die Fertigstellung verursacht.

Oft ist nur ein Klassenobjekt betroffen, das zeigt Ihnen, welche Dateien (normalerweise Header) Sie sich ansehen müssen.

Benutzeravatar der Community
Gemeinschaft

@John Richardson / @Jonathan Holland

Meine Includes sind korrekt eingerichtet, da gibt es keine Probleme. Ich habe auch den NCB-Neuaufbau mehrmals versucht, aber er behebt ihn nie zu 100%.

Ich habe das Gefühl, dass es mit Vorwärtsdeklarationen von Klassen zu tun haben könnte. Um beispielsweise die Komplexität von Includes in Header-Dateien zu reduzieren, machen wir normalerweise so etwas wie:

class MyPredeclared;

class SomeOtherClass
{
private:
    MyPredeclared* m_pPointer;
}

Ich frage mich, ob es das vermasselt? Irgendwelche anderen Ideen? Es wird definitiv schlimmer, je größer Ihr Projekt wird.

1397350cookie-checkSo erhalten Sie IntelliSense, damit es in Visual Studio 2008 zuverlässig funktioniert

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy