Estaba experimentando con un proyecto de C++ usando el Compile Time Hashing technique I found here. Las macros funcionan como se esperaba, y el tiempo de compilación es razonable, pero parece que las 64 macros recursivas están jugando al infierno con el Intellisense de Visual Studio. Después de cada edición breve, el IDE se bloquea durante ~ 30 segundos. Sospecho que se está terminando de analizar las macros anidadas. Tan pronto como elimine la línea #include "consthashmacro.h
, la respuesta vuelve a la normalidad.¿Qué hace que este archivo de encabezado sea lento VS2005 a un rastreo? (¿IntelliSense exonerado?)
¿Hay alguna manera de deshabilitar Intellisense para un archivo de encabezado específico?
He encontrado este artículo titulado "Controlling IntelliSense Through Macros", pero la solución no parece estar funcionando correctamente para mí tampoco.
Quizás no es intelliSense? Definitivamente está relacionado con ese encabezado. ¿Algunas ideas?
EDIT:
I intentado desactivar Intellisense en su totalidad por renaming the feacp.dll as recommended. Obtengo el mismo comportamiento: las ediciones hacen que el IDE se bloquee durante largos períodos. Al quitar el encabezado se restablece el rendimiento. ¿Qué otra característica de VS2055 podría estar causando este retraso increíble?
para reproducir:
mediante Visual Studio 2005, cree un nuevo "Aplicación de consola Win32" con la configuración predeterminada (es decir: el uso de encabezados precompilados). Agregue el siguiente código al archivo cpp. (Extracto 'consthashmacro.h' en el directorio de origen (disponible en la zip file en el sitio de Chris Saboya)
#include "stdafx.h"
#define CONSTHASH(s) ((s)[0])
//#include "consthashmacro.h"
void Send(long hash, long value)
{
printf("Sending %x %x\n", hash, value);
}
#define QQuot_(x) #x
#define QQuote(x) QQuot_(x)
#define Debug_Print(s, v) (Send(CONSTHASH(QQuote(__LINE__)##s), *((long*)&(v))))
int _tmain(int argc, _TCHAR* argv[])
{
int i = __LINE__;
float f= 3.14f;
Debug_Print("This is a test %d", i);
i++;
Debug_Print("This is a test %d", i);
Debug_Print("This was test %f", f);
return 0;
}
Cuando se sustituye la #define CONSTHASH
con la línea incluirá por debajo de ella, el rendimiento disminuye a un rastreo.
¿El proyecto está utilizando un encabezado precompilado? Tal vez podrías intentar colocar este encabezado en él. – Praetorian
Buena idea, pero (5 minutos de espera después ...) no funcionó. – AShelly
En VS2010 'Herramientas> Opciones> Editor de texto> C/C++> Avanzado' Veo opciones para deshabilitar IntelliSense y esas, ¿no están disponibles en VS2005? – nobody