当前位置:  开发笔记 > 编程语言 > 正文

为什么允许空声明?

如何解决《为什么允许空声明?》经验,为你挑选了1个好方法。

为什么C允许空声明?语法级别都明确允许它们使用,并且仅在编译时才生成警告。

生产declaration,从C标准的附件A中,允许它在语法级别:

declaration
    = declaration_specifiers , ";"
    | declaration_specifiers , init_declarator_list , ";"
    | static_assert_declaration
    ;

EBNF由我变成)



1> Ben Voigt..:

C不允许空声明。参见/sf/ask/17360801/

但是它的确允许声明而没有任何声明符,只有声明符,只要那些声明符创建类型标记即可。例如:

/* here begins the specifier */
struct tagS /* <-- there's the tag */
{
   int x;
} /* here ends the specifier */
/* no declarators */
;

这是定义用户定义类型的结构的一种非常有用且合法的方法。

这就是为什么语法必须将声明符列表指定为可选的原因。

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有