C11:定长数组声明如何符合 C11 标准的规范?

标签 c c11

C11 标准 (N1548) 第 6.7.6 节规定了声明符的规范。

根据我的理解(参见关于剖析 C 声明的 answer),数组声明 int * arr[5]; 有两部分:(a) 声明说明符 int,以及 (b) 声明符 * arr[5]。我的问题是如何根据 C11 标准解释声明符部分。

标准说: enter image description here 好的,所以 * 显然对应于“指针”部分。因此,arr[5] 必须对应“direct-declarator”部分。然而,在这个标准的“direct-declarator”的扩展中,似乎没有匹配arr[5]的条目——因为它似乎是常量表达式5 括号中的内容与“type-qualifier-list”或“assignment-expression”不匹配。

那么这个声明如何符合 C11 标准的规范呢?

最佳答案

5赋值表达式

如果您查看assignment-expression 的定义,其中之一是conditional-expression。一个定义是逻辑或表达式。通过追踪此定义链,您最终将到达主要表达式,其中一个定义是常量

关于C11:定长数组声明如何符合 C11 标准的规范?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51741412/

相关文章:

c - 关于编译中使用的标志

visual-c++ - MSVC 上的 std::isfinite

c - 初学者的 scanf_s() 残疾

在给定数字 N 后将列更改为行

c++ - 在 Visual Studio 中调试。进入表达阶段

c++ - 8192位异或加密?

c++ - C++11 是否支持 C11 的新特性?

python - 包装用于Python的C代码的最优选方法是什么?

c - 为什么 "sizeof(a ? true : false)"给出四个字节的输出?

c - atomic_bool 值更新,其他进程看不到