C11标准(N1548)第6.7.6节列出了声明程序的规范。
以我的理解(请参阅有关剖析C声明的答案),数组声明int * arr[5];
有两个部分:(a)声明说明符int
和(b)声明符* arr[5]
。我的问题是如何根据C11标准解释声明符部分。
该标准说:好的,因此*
很显然对应于“指针”部分。因此,arr[5]
必须对应于“直接声明符”部分。但是,在此标准中“直接声明符”的扩展中,似乎没有匹配的条目arr[5]
-因为5
括号中的常量表达式似乎与“ type-qualifier-list”或“ assignment-表达”。
那么,该声明如何适合C11标准的规范?
5
是赋值表达式。
如果您看一下assignment-expression的定义,则其中之一就是conditional-expression。对此的一种定义是逻辑或表达式。通过跟踪该定义链,您最终将达到primary-expression,对于该表达式而言,在一个定义上它是常量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句