Funktionsdefinitionen fehlen in Intellisense in Visual Studio C ++ 2005-2013

Das folgende Problem plagt eines meiner Projekte seit langem:

Einige Funktionsdefinitionen (aus CPP-Dateien) sind von Intellisense ausgeschlossen / verborgen!

Es ist nicht möglich, "Gehe zu Definition"für diese Funktionen, noch sind die in derNavigationsleiste.

Die Funktionen erscheinen jedoch in der Autovervollständigungsliste. Das Problem betrifft nur CPP-Dateien. Die H-Dateien werden in Ordnung analysiert. 'Gehe zu Deklaration' funktioniert auch.

Dies ist das gleiche seit 2005, mit jeder neuen Version, die ich auf ein Update gehofft habe, aber es scheint von niemand anderem als Fehler erkannt zu werden.

AKTUALISIEREN: Ich habe dies folgendermaßen verfolgt: Alle Funktionen, die ein bestimmtes Makro enthalten, werden von Intellisense nicht erkannt. Das ursprüngliche Makro war

#define forlist(x,list) for( auto x= list.begin(); x.valid(); ++x)

Sie können aber auch den vereinfachten Testfall verwenden

#define fortest(x)  for( auto x= 1; x< 2; ++x)

void myclass::TestFN()
{
    fortest( g )
    {
        g;
    }
}

Der nächste Schritt wäre, eine Problemumgehung zu finden (oder die Microsoft-Fehlerberichterstattung durchzugehen).

Bitte schimpfen Sie nicht zu viel über dieses Makro. Dies ist der vorhandene Code einer Listenimplementierung, den ich nicht ändern kann. Ich könnte das Makro einfach NICHT verwenden, aber ich denke immer noch, dass dies ein VS-Fehler ist.

Eine lustige Sache ist, dass die folgenden (wirklich*** ic Makro) funktioniert gut:

#define fortest(x)  for( auto x= 1; x< 2; ++x) {

void myclass::TestFN()
{
    fortest( g )
        g;
    }
}

Könnte es sein, dass Intellisense Fall 1 als illegale Definition von lokalem Spaß behandelt? (sehenhttp://connect.microsoft.com/VisualStudio/feedback/details/781121/c-intellisense-mistakes-loop-expression-for-function-definition)

Die folgenden funktionieren auch gut

#define fortest(x)  for( auto x= 1; x< 2; ++x)

void myclass::TestFN()
{
    fortest( g )
        g;
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage