Intellisense中缺少的功能定义C 2005-2013
Function definitions missing from intellisense in Visual Studio C++ 2005-2013
以下问题困扰着我的项目之一:
一些函数定义(来自.cpp文件)被排除/隐藏在Intellisense中!
对于这些功能,不可能" goto定义",也不可能在 navigation bar 中列出。
但是,功能确实出现在自动完成列表中。问题仅适用于.cpp文件,.h文件可以很好地解析。``宣称宣言''也有效。
自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;
}
}
下一步将是找到解决方法(或尝试通过Microsoft Bug报告)。
请不要对这个宏太多。这是我无法更改列表实现的现有代码。我只是不使用宏,但我仍然认为这是一个vs bug。
一件有趣的事情是,以下(真正的* ** ic宏)正常工作:
#define fortest(x) for( auto x= 1; x< 2; ++x) {
void myclass::TestFN()
{
fortest( g )
g;
}
}
是否可以将Intellisense视为案例1作为非法局部函数定义?(请参阅http://connect.microsoft.com/visualstudio/feedback/details/781121/c-intellisense-mistakes-loop-loop-expression-for-for-for-for-for-duction-definition)
)以下工作正常
#define fortest(x) for( auto x= 1; x< 2; ++x)
void myclass::TestFN()
{
fortest( g )
g;
}
像往常一样,对我的问题的兴趣在几个小时后消失了,所以我必须自己弄清楚...
我们只需要使用cpp.hint
文件的概念。
基本上,您必须将麻烦的宏放入名为cpp.hint
的文件中,然后将该文件放入解决方案目录(对我不起作用)或在您的代码文件驻留的父级指导中。(为我工作)
在该文件中,我们只是将麻烦的宏放在没有右手的情况下,例如:
#define forlist(x,list)
NOTE :您必须重置IntelliSense Cache用于使用更改的
cpp.hint
文件中的新数据。您应该:
- 删除
ipch
文件夹(通常放置在解决方案文件夹中)。- 删除解决方案文件夹中的所有 *.sdf文件。
- 删除解决方案文件夹或
ipch
文件夹中的所有 *.vc.db文件。
对于更高级的宏(例如,对于代码块具有" start"answers" end"宏),还有其他一些技巧。
原始链接是:http://msdn.microsoft.com/en-us/library/dd997977.aspx
造成麻烦的原因是,如果IntelliSense性能(可能)如果必须解析项目中的所有宏,则(可能)将大大降低,因此仅在'cpp.hint'中明确解析了这些宏。
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- C++ LNK 2005 错误"已在 .obj 中定义
- 错误的LNK2005已定义为将C /Fortran解决方案更新为VS 2013
- Intellisense中缺少的功能定义C 2005-2013
- 当提供用户定义的移动构造函数时,Visual Studio 2013不会删除复制构造函数
- Visual Studio 2013用户定义文字-最新CTP
- 类外的成员模板函数定义无法生成Visual studio 2013
- STL 集自定义排序函数在 Qunicy 2005 中有效,但在 MS Studio 2010 中不起作用
- 在Visual Studio 2013 C++中,我已经清楚地定义了一个类,并且收到错误说它不是一个类
- 错误 C2601:'main':本地函数定义非法 - MS VS 2013 编译器
- Visual Studio 2013 中"per file"自定义生成步骤在哪里?
- 错误 5 错误 C2535 成员函数已定义或声明.视觉工作室 2013.
- Visual Studio 2013 中的C++ - <Class> 未定义
- 自定义CFileDialog在visual studio 2013 (MFC)
- Visual Studio 2013:自定义枚举的链接器错误
- 使用Microsoft Visual Studio 2013的C++11用户定义文字
- 类型定义枚举的问题.以及Visual Studio 2005中的错误
- LNK2019:未定义的外部符号_Getgloballocale, Visual Studio 2013
- 错误链接2005已经在.obj中定义