VS2012 使用 C++ 编译器 2012 年 11 月 CTP (v120) 强调错误错误

Posted

技术标签:

【中文标题】VS2012 使用 C++ 编译器 2012 年 11 月 CTP (v120) 强调错误错误【英文标题】:VS2012 Using C++ Compiler Nov 2012 CTP (v120) Underlines False Errors 【发布时间】:2012-12-18 18:33:32 【问题描述】:

我下载并安装了Microsoft's pre-release C++ compiler for Visual Studio 2012。我的项目所有配置的平台工具集都设置为:“Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012)”。

这允许我的项目使用 Microsoft 在其预发布版本中实现的新 C++11 功能。使用新功能的代码编译并运行得非常好,但我仍然得到红色下划线曲线,好像我的代码有错误一样。

到目前为止,我最好的选择是完全禁用“C/C++ Squiggles”。有什么方法可以让 Visual Studio 2012 意识到我正在使用 v120 进行编译,并相应地 squiggle?

示例

以下代码按预期运行:

int values[] 4, 3, 2, 1, 0;

for(int i : values)

    std::cout << i << ' ';

它产生输出:

4 3 2 1 0

然而,Visual Studio 2012 用波浪形的红色强调了第一个 ,并带有工具提示:

int values[] 错误:不允许不完整的类型

【问题讨论】:

IMO 曲线不适用于 C++ 程序员,应该禁用! IntelliSense 错误什么都不做,只是增加“错误”计数。 【参考方案1】:

您没有使用 v120 进行编译。您正在使用 v120 CTP 进行编译。 CTP 代表“Community Technology Preview”,部分“Preview”位是 Intellisense 无法识别任何新结构。此行为是为 CTP 设计的,不会被修复,也没有变通方法。

您必须等待 Microsoft 完成对 CTP 的错误修复并将其作为适当的更新发布,其中可能包含对新功能的 Intellisense 支持。

【讨论】:

是的,我刚刚改了。对我来说似乎很奇怪,但是嘿。这点还是很有道理的。 是的,具体来说,CTP只包含编译器更新和&lt;initializer_list&gt;,仅此而已。 这是我的一个负担,我尝试了很多 C++11 功能,但因为曲线而放弃。现在我知道也要尝试编译它。 @Puppy 有没有链接可以下载 Visual Studio 2012 的官方 c++11?我只能在 google 上找到 CTP 版本。提前致谢!

以上是关于VS2012 使用 C++ 编译器 2012 年 11 月 CTP (v120) 强调错误错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法在 win64 上使用 boost 1.54 编译 VS2012 C++ 代码?

安装 VS 2012 后无法编译我的 c++ 项目

编译 VS 2012 C++ 项目时出现致命错误无法运行“mt.exe”

在 Visual C++ 编译器中使用 std::initializer_list 2012 年 11 月 CTP

VS2012对C++头文件检查不严格

VS 2012 模板错误