gpt4 book ai didi

c++ - 为什么 Q_FOREACH 宏会破坏 VS2010 智能感知?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:44 25 4
gpt4 key购买 nike

我在 VS2010 中有一个带有 Qt 4.7.4 的 c++ 项目,我经常遇到 IntelliSense 问题(就像我们所有人一样......)。一个具体的问题是有时找不到函数体(在 .cpp 文件中)。如果我单击该函数体,下拉框(通常显示您所在的函数)是空的。

今天我在添加 foreach() 后立即注意到了这种行为语句(Qt 宏 Q_FOREACH)。然后我用相应的 for(int i = 0; i < ...) 替换了 foreach() 宏。 IntelliSense 立即再次显示该函数。

所以我想知道:

  1. 有人可以验证此行为并在评论中告诉我吗?
  2. 为什么会发生这种情况?
  3. 是否有可以让我继续使用 Q_FOREACH 的解决方法?

最佳答案

您必须使用“cpp.hint”文件的概念。

基本上,您必须将麻烦的宏放入一个名为“cpp.hint”的文件中,并将该文件放入您的解决方案目录中(这对我不起作用 - 可能是非标准项目布局)或父目录中您的代码文件所在的位置。(为我工作)

在那个文件中,你只是把麻烦的宏放在右边,所以在你的情况下:

#define foreach()

或者更好

#define Q_FOREACH(variable, container)
#define foreach(...)
etc.

注意,在将定义放入 cpp.hint 文件后,您可能必须重新扫描或重新启动或摆弄函数才能设置效果。

更新:事实上,我刚刚发现,我必须对 .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”文件以供引用

关于c++ - 为什么 Q_FOREACH 宏会破坏 VS2010 智能感知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14457724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com