【发布时间】:2014-01-31 12:34:54
【问题描述】:
以下问题困扰了我一个项目很长时间:
一些函数定义(来自 .cpp 文件)从智能感知中排除/隐藏!
这些功能无法“转到定义”,导航栏中也没有列出。
不过,这些函数确实出现在自动完成列表中。问题仅适用于 .cpp 文件,.h 文件解析得很好。 “Goto Declaration”也有效。
自 2005 年以来也是如此,对于每一个新版本,我都希望能得到修复,但似乎并没有被其他人视为错误。
更新: 我已将其归结为以下几点:intellisense 无法识别包含某个宏的所有函数。原来的宏是
#define forlist(x,list) for( auto x= list.begin(); x.valid(); ++x)
但你也可以使用简化的测试用例
#define fortest(x) for( auto x= 1; x< 2; ++x)
void myclass::TestFN()
{
fortest( g )
{
g;
}
}
下一步是寻找解决方法(或尝试通过 micrsoft 错误报告)。
请不要对这个宏说太多。这是我无法更改的列表实现的现有代码。我可以不使用宏,但我仍然认为这是一个 VS 错误。
一个有趣的事情是,以下(真的 ***ic 宏)可以正常工作:
#define fortest(x) for( auto x= 1; x< 2; ++x) {
void myclass::TestFN()
{
fortest( g )
g;
}
}
会不会是智能感知将案例 1 视为非法的局部函数定义? (见http://connect.microsoft.com/VisualStudio/feedback/details/781121/c-intellisense-mistakes-loop-expression-for-function-definition)
下面的工作也很好
#define fortest(x) for( auto x= 1; x< 2; ++x)
void myclass::TestFN()
{
fortest( g )
g;
}
【问题讨论】:
-
您是否尝试过此处提到的修复:stackoverflow.com/questions/2500674/…?
-
1.您提到的“修复”包括重新启动/清理/重建智能感知。在过去的几年里,我已经这样做了大约 2300 次,但没有帮助 ;o) 2. 我不想重置我所有的 VS 设置。无论如何这不可能是VS设置问题,因为其他项目工作正常。
-
所以你有一个项目一切正常,而另一个项目 intellisense 碰巧错过了一些功能,你确定这是一个错误或什么,而不是某种项目损坏?那么我不会问你是否从头开始重建项目,因为你可能已经这样做了大约 1700 次。
-
你在寻求帮助,但不是那种对你没有帮助的帮助。您想知道解决您问题的具体事物,对吧?
-
@TobiMcNamobi 可能每 10.000 名程序员中就有 1 人遇到同样的问题,而且可能每 100 名程序员中就有 1 人足够聪明地解决了这个问题。所以我准备等待......
标签: c++ visual-studio visual-c++ intellisense