1
我在写一个自定义的C99解析器。我从this链接中获得了语法。这种语法说下面是声明数组一个有效的语法 -数组声明中方括号内的星号是什么意思C
int arr[*];
语法的相关部分follwing -
direct-declarator ::=
identifier
"(" declarator ")"
direct-declarator "[" type-qualifier-list? assignment-expression? "]"
direct-declarator "[" "static" type-qualifier-list? assignment-expression "]"
direct-declarator "[" type-qualifier-list "static" assignment-expression "]"
direct-declarator "[" type-qualifier-list? "*" "]"
direct-declarator "(" parameter-type-list ")"
direct-declarator "(" identifier-list? ")"
我试图编译使用GCC此声明中的代码。它给了我下面的警告 -
error: ‘[*]’ not allowed in other than function prototype scope
所以,我想声明一个函数原型这种类型的语法和它没有任何错误或警告编译。我没有得到的是这个语法可能在语义上是什么意思。任何专家的解释?
这只是一种明确的表达方式,表示该数组维度没有传递任何值。 (你必须始终提供最后一个,但前面的维是可选的)(这是我正在寻找的链接) –
也许阅读标准的其余部分,如果你要写一个解析器? –