我可以让VC ++ Intellisense忽略一些它认为无效的东西吗?

时间:2013-08-13 07:24:14

标签: c++ visual-studio visual-c++ visual-studio-2012 intellisense

C ++,VS 2012(但在VS的早期版本中也发生了同样的事情)。

有时,Intellisense发现并非真正存在问题的“问题”,并将其红色波浪线置于完全有效的代码之下。

示例:

class A {
  A(const A&);
  A& operator=(const A&);
public:
  A(const wchar_t*, const wchar_t*, int);
#define AMsg(x) A(x, __FILEW__, __LINE__)
};

...

throw AMsg(L"abc");

AMsg宏转换为ctor调用,保存一个键入明显的最后两个参数值,代码按预期工作,但Intellisense在AMsg下放置一个红色波浪形,表示A :: A(const A&)无法访问。 A :: A(const A&)是不可访问的,是的,但是AMsg调用了一个不同的ctor,并且Intellisense无法看到它。

有没有办法以某种方式让Intellisense忽略AMsg?我记得我们可以,例如,编辑存储在文件中的编辑器的关键字列表,也许有一些文件或宏(例如,“不解析这个特定文件的内容”一个?)有助于控制Intellisense?

1 个答案:

答案 0 :(得分:1)

“问题”是Intellisense编译器构建在EDG的编译器之上,而不是MSVC本身。 EDG的编译器更接近标准,这意味着它可以解决MSVC明年可能遇到的问题。

无法在代码库的某些部分打开或关闭智能感知。这没有意义。假设它将忽略int foo(int),然后编译器将在重载决策中包含int foo(int)。你的整个计划可能会改变。