我在Q20 4.7.4的VS2010中有一个c ++项目,我经常遇到IntelliSense问题(正如我们所做的那样......)。一个特定的问题是有时无法找到函数体(在.cpp文件中)。如果我单击该函数体,下拉框(通常显示您所在的函数)为空。
今天我在添加foreach()
语句(Qt宏Q_FOREACH)后立即注意到了这种行为。然后我用相应的for(int i = 0; i < ...)
替换了foreach()宏,并立即将 重新显示了该函数。
所以我想知道:
答案 0 :(得分:8)
您必须使用'cpp.hint'文件的概念。
基本上,您必须将麻烦的宏放入名为'cpp.hint'的文件中并将该文件放在您的解决方案目录中(这对我来说不起作用 - 可能是非标准项目布局)或者在父目录中您的代码文件所在的位置。(为我工作)
在那个文件中你只是把麻烦的宏放在右边,所以在你的情况下:
#define foreach()
或者更好
#define Q_FOREACH(variable, container)
#define foreach(...)
etc.
注意,在将定义放入cpp.hint文件后,您可能需要重新扫描或重新启动或使用函数来设置效果。
UPDATE :的确,我刚刚发现,我必须对.cpp文件进行一些更改(例如添加新行)才能启动效果。修复程序不会自动应用
原始链接是: http://msdn.microsoft.com/en-us/library/dd997977.aspx
麻烦的原因是,如果必须解析项目中的所有宏,Intellisense性能会(可能)显着降低,因此它只解析那些在'cpp.hint'中明确给出的那些宏。
原始的Microsoft文本说您可以使用“从源文件的根目录到包含源文件本身的目录的路径”中的任何目录。在典型的Visual C ++项目中,根目录包含解决方案或项目文件。“
您可以在'C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ vcpackages'中找到主要的'cpp.hint'文件以供参考