C++ C++;if条件下的静态和非静态变量声明
在Visual Studio 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 允许使用类
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