【问题标题】:Difference between intellisense and compiler in VS.NET C++ 2010VS.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++ 代码吗? 什么意思?

【问题讨论】:

    标签: c++ visual-c++ visual-studio-2010


    【解决方案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# 人员)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多