VS.NET C++ 2010 中智能感知和编译器的区别
Posted
技术标签:
【中文标题】VS.NET C++ 2010 中智能感知和编译器的区别【英文标题】:Difference between intellisense and compiler in VS.NET C++ 2010 【发布时间】:2010-02-03 08:12:10 【问题描述】:下面是合法的C++代码吗:
class C
static public int x;
;
它在 Visual Studio 2008 C++ 和 Visual Studio 2010 C++ (beta 2) 中编译正常。但是静态成员 x 最终不会公开。
在 Visual Studio 2010 beta 2 中,体验更加陌生。 Intellisense 报告错误“需要一个标识符”,但编译器没有。 Visual Studio 2008 没有给出任何错误。
所以问题是:
这是合法的 C++ 代码吗? 什么意思?
【问题讨论】:
【参考方案1】:这不是合法的 C++。这是一个合法的 C#,所以这就是 MS IDE 出故障的原因。
正确:
public: static int x;
【讨论】:
但它确实可以编译。如果它不合法,IDE 做了正确的事情,而 C++ 编译器做错了事情(至少在 vs.net 2010 中)。 嗯,这确实令人惊讶。但是,“for each(x in someStlCollection)”甚至在 MSVC++ 8 上也可以编译,这完全是关闭的。它是 c C++CLI 语法,它以某种方式通过扩散进入 C++ 编译器。顺便说一句,C++ 提供了它自己的 foreach 语法,从 C++0x 开始。【参考方案2】:这不是合法的 C++ 代码。
变量声明中不允许使用“public”。 然而,您看到的是编译器“工作”,因为它也编译为 CLI(.NET 代码),并且它是允许和合法的。
【讨论】:
【参考方案3】:不,这不是合法的 C++
它可能是合法的 C#(但您需要咨询 C# 人员)。
【讨论】:
以上是关于VS.NET C++ 2010 中智能感知和编译器的区别的主要内容,如果未能解决你的问题,请参考以下文章