为什么这个const const const声明有效
一位朋友让我解释原因
const const const const const int const i = 0;
是有效的语法。 我拒绝对这个问题有任何想法。 虽然我很好奇它是否只是一个语法的东西?
编辑。 标签是C ++,我的朋友正在引用gcc,所以我应该添加C标签。
从n1256:
6.7.3 / 4
如果同一个限定符在同一个特定定义列表中出现不止一次,无论是直接地还是通过一个或多个typedef,行为都与它只出现一次相同。
在C ++中,这应该会出错。
从C ++ 03标准:
7.1.5 / 1 [dcl.type]
作为一般规则,在声明的完整decl-specifier-seq中最多允许一个类型说明符。 此规则的唯一例外情况如下:
– const或volatile可以与任何其他类型说明符组合使用。 但是,除非通过使用typedef(7.1.3)或模板类型参数(14.3)引入冗余cv限定符,否则将禁止冗余cv限定符,在这种情况下,将忽略冗余cv限定符。
从N3797(C ++ 11):
7.1.6 / 2 [dcl.type]
作为一般规则,在声明的完整decl-speci-seq或类型-peci-seq或trailing-type-speci-seq中,最多只允许一种类型指定。 此规则的唯一例外情况如下:
— const can be combined with any type specifier except itself.