C++ __func&x2B+;11功能';s局部预定义变量,won';不编译
函数的C++ __func&x2B+;11功能';s局部预定义变量,won';不编译,c++,visual-c++,c++11,visual-studio-2012,standards-compliance,C++,Visual C++,C++11,Visual Studio 2012,Standards Compliance,函数的\uuuu func\uuuuC++11局部预定义变量未在Visual Studio 2012 Professional(安装了更新1)中使用默认内置Visual Studio 2012(v110)编译器或2012年11月CTP(v120\u CTP\u Nov2012)编译器进行编译。然而,编辑并没有抱怨在\uuuu func\uuu下有任何红色扭曲的下划线\uu func\uu应该给出其包含函数的名称,在本例中为foo,但这既不会编译,也不会让编辑器抱怨: #include <i
\uuuu func\uuuu
C++11局部预定义变量未在Visual Studio 2012 Professional(安装了更新1)中使用默认内置Visual Studio 2012(v110)编译器或2012年11月CTP(v120\u CTP\u Nov2012)编译器进行编译。然而,编辑并没有抱怨在\uuuu func\uuu
下有任何红色扭曲的下划线\uu func\uu
应该给出其包含函数的名称,在本例中为foo
,但这既不会编译,也不会让编辑器抱怨:
#include <iostream>
using namespace std;
void foo()
{
cout << __func__ << endl;
return;
}
int main()
{
foo();
return 0;
}
我的代码中是否遗漏了一些东西,或者在将来的更新中是否可以这样做?MSVC的C99支持总体上相当差;您最好使用MSVC特有的
\uu函数\uu
宏。有关详细信息,请参见此问题:
更新(2015-06-22):Visual Studio 2015支持
\uuuuu func\uuu
,请参阅使用C++11标准编译程序,因为\uuu func\uuu
是C++11功能
因此,将其编译为:
g++ -std=c++11 foo.cpp -o foo
它说支持是“部分的”。但是,编辑不会抱怨在
\uuu func\uuu
下有任何红色扭曲的下划线——永远不要依靠红色扭曲来告诉你的代码是否可以编译。IntelliSense和实际的编译器前端是由不同的人开发的。如果有疑问,编译器是正确的,因为这就是创建二进制文件的原因。OP没有使用GCC。MSVC不支持任何-std=c++11
命令行选项。在回答之前,请多花点时间阅读问题,这本可以是一个不同问题的好答案,但不是这个问题。
g++ -std=c++11 foo.cpp -o foo