我正在尝试使用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表示正式道歉:很遗憾我对您不公正地提出了要求。

08-27 01:31
查看更多