C++;语言定义说明了静态关键字的范围? 在C++中,如果我有一个类: class Example { static int s_One, s_Two; ... };

C++;语言定义说明了静态关键字的范围? 在C++中,如果我有一个类: class Example { static int s_One, s_Two; ... };,c++,syntax,static,language-lawyer,grammar,C++,Syntax,Static,Language Lawyer,Grammar,该语言是否明确定义了sutwo也是静态的 代码> 静态< /代码>关键字范围遍及 int ,或者它可以像 */COD>只适用于一个变量?< /P> < P>根据C++ 17标准(10声明) 2一个简单的声明或NODELCSPEC函数声明的形式 attribute-specifier-seqopt decl-specifier-seqopt init-declarator-listopt ; 和(10.1规范): 1可以在声明中使用的说明符是 所以在这个宣言中, static int s_One

该语言是否明确定义了
sutwo
也是静态的


<>代码> <代码>静态< /代码>关键字范围遍及 int ,或者它可以像<代码> */COD>只适用于一个变量?< /P> < P>根据C++ 17标准(10声明)

2一个简单的声明或NODELCSPEC函数声明的形式

attribute-specifier-seqopt decl-specifier-seqopt init-declarator-listopt ;
和(10.1规范):

1可以在声明中使用的说明符是

所以在这个宣言中,

static int s_One, s_Two;

decl说明符seq
包含两个
decl说明符
static
(存储类说明符)和
int
。因此,存储类说明符
static
描述了
init声明符列表中的两个变量
s_One
s_Two
是的,它适用于该声明中的每个名称:

[…]给定decl说明符序列中最多应出现一个存储类说明符[…]存储类说明符适用于列表中每个初始说明符声明的名称[…]


这个问题可以通过阅读来回答。但是,为什么不简单地通过声明每个变量来消除歧义呢?Jes PulJul:可以说,大多数关于C++的答案都可以通过阅读标准来回答。但是标准很大,有时很难导航。@JesperJuhl答案可能对其他人也很有价值。如果不将所有声明符应用于声明引入的所有变量,那将是非常愚蠢的。。。“C++:拿着我的啤酒,
int*a,b
”这还不够;这并没有表明SCS同时适用于这两种情况,只是这是可能的;静态int s_2。更具可读性和明确性。不,不是。为什么说它是无效的?@vladfrommosco为什么?@vladfrommosco如何声明两个独立的
静态
int
s无效语法?
static int s_One, s_Two;