Definiciones de funciones que faltan de intellisense en Visual Studio C ++ 2005-2013

El siguiente problema plaga uno de mis proyectos durante mucho tiempo:

Algunas definiciones de funciones (de archivos .cpp) están excluidas / ocultas de intellisense!

No es posible "Definición de Goto"para esas funciones, ni se enumeran en elBarra de navegación.

Sin embargo, las funciones aparecen en la lista de autocompletar. El problema es solo para archivos .cpp, los archivos .h se analizan bien. La 'Declaración de Goto' también funciona.

Esto es lo mismo desde 2005, con cada nueva versión, esperaba una solución, pero parece que nadie más lo reconoce como un error.

ACTUALIZAR: He rastreado esto a lo siguiente: Todas las funciones que contienen una cierta macro no son reconocidas por intellisense. La macro original era

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

Pero también puedes usar el caso de prueba simplificado.

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

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

El siguiente paso sería encontrar una solución alternativa (o intentar realizar un informe de errores de micrsoft).

Por favor, no te des tu opinión sobre esta macro. Este es el código existente de una implementación de lista que no puedo cambiar. Simplemente no podría usar la macro, pero sigo pensando que esto es un error de VS.

Una cosa divertida es que lo siguiente (realmente*** ic macro) funciona bien:

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

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

¿Podría ser que intellisense trate el caso 1 como una definición de función local ilegal? (verhttp://connect.microsoft.com/VisualStudio/feedback/details/781121/c-intellisense-mistakes-loop-expression-for-function-definition)

El siguiente trabajo bien, también

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

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta