Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;if条件下的静态和非静态变量声明_C++_G++_Gnu - Fatal编程技术网

C++ C++;if条件下的静态和非静态变量声明

C++ C++;if条件下的静态和非静态变量声明,c++,g++,gnu,C++,G++,Gnu,在Visual Studio C++中编译以下if条件: if(int x = 5) { std::cout << x; } 1 如果(int x=5){STD::CUT< P>根据C++标准,GNU是正确的,VisualStudio做的是错误的。6.4/1:< /P> condition: expression type-specifier-seq declarator = assignment-expression 允许使用类

在Visual Studio C++中编译以下if条件:

if(int x = 5) { std::cout << x; }                  1

<代码>如果(int x=5){STD::CUT< P>根据C++标准,GNU是正确的,VisualStudio做的是错误的。6.4/1:< /P>
condition:
    expression
    type-specifier-seq declarator = assignment-expression

允许使用类型说明符seq,但不能包含存储类说明符,如
static
。要查看类型说明符seq可以包含什么,请阅读。

这在C++11中有效:

条件:
表情
属性指定项seqopt decl指定项seq声明符=初始值设定项子句
属性指定项seqopt decl指定项seq声明符带括号的初始列表

然而,标准中的A允许在条件中定义类型,这在C++14中已经得到了修复,尽管由于GCC团队似乎推迟了一个缺陷,看起来它可能也解决了这个问题。

您指的是C++98语法,代码是有效的。版本中没有指定问题,但我的答案是useful观察以找出问题产生的地方。
condition:
    expression
    type-specifier-seq declarator = assignment-expression