我正在尝试使用Compile Time Hashing technique I found here进行C++项目。宏可以按预期工作,并且编译时间合理,但是64个递归宏似乎在与Visual Studio的Intellisense玩在一起。每次简短编辑后,IDE会挂起约30秒。我怀疑它试图解析嵌套的宏变得很困难。一旦我删除了#include "consthashmacro.h
行,响应就会恢复正常。
有没有一种方法可以禁用特定头文件的Intellisense?
我已经找到了标题为"Controlling IntelliSense Through Macros"的文章,但是那里的解决方案似乎也不适合我。
也许不是intelliSense?绝对与该 header 有关。有任何想法吗?
编辑:
我尝试通过renaming the feacp.dll as recommended完全禁用Intellisense。我得到相同的行为-编辑导致IDE挂起很长时间。卸下 header 可恢复性能。 VS2055的其他哪些功能可能导致这种令人难以置信的滞后?
重现:
使用Visual Studio 2005,使用默认设置(即:使用预编译头)创建一个新的“Win32控制台应用程序”。将以下代码添加到cpp文件中。 (将“consthashmacro.h”解压缩到源目录中(可从Chris Savoie的站点上的zip file获得)
#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;
}
当我用下面的包含行替换
#define CONSTHASH
时,性能会降低以进行爬网。 最佳答案
我是对的,递归宏上挂了一些东西,但这不是IntelliSense。罪魁祸首是我很久以前安装的Refactor! for C++ from DevExpress的免费版本(很少使用)。
当我卸载它时,IDE性能恢复正常。我重新启用了IntelliSense,它可以正常工作。
我想对IntelliSense表示正式道歉:很遗憾我对您不公正地提出了要求。