加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c,尾随逗号如何不是错误,会发生什么? Foo x,y ,;

发布时间:2020-12-16 09:42:32 所属栏目:百科 来源:网络整理
导读:有人向我指出,我在某些c代码中看起来像是一个拼写错误: protected: Foo x,y,; 我原本以为尾随的逗号会出错,但显然它不是?这是不确定的,或者会发生什么?可能是坏事,因为代码检查程序抱怨它. 解决方法 相关的语法产生见§9.2: member-declarator-list: mem
有人向我指出,我在某些c代码中看起来像是一个拼写错误:

protected:
    Foo  x,y,;

我原本以为尾随的逗号会出错,但显然它不是?这是不确定的,或者会发生什么?可能是坏事,因为代码检查程序抱怨它.

解决方法

相关的语法产生见§9.2:

member-declarator-list:
  member-declarator
  member-declarator-list,member-declarator

逗号只允许分隔声明符(名称). member-declarator本身可能不包含逗号.

编辑:这里是成员声明者…它不是自包含的,声明者的语法通常是一个蜘蛛网.

member-declarator:
  declarator virt-specifier-seq(opt) pure-specifier(opt)
  declarator brace-or-equal-initializer(opt)
  identifier(opt) attribute-specifier-seq(opt) : constant-expression

不正确的语法不是未定义的行为;允许错误放置逗号的编译器有一个错误.拒绝那种东西是标准的要求.

注意,枚举定义和大括号初始化器中允许使用尾随逗号.我认为这两个案例都是由C 11添加的,以简化编写源代码生成器. (即使有这么简单的要求,预处理器也经常会遇到困难.)通常,简单的生成器可能会避免创建具有多个名称的声明,因为由于语法复杂,它可能是一堆蠕虫.另一方面,一个空的声明组成;允许,在成员函数定义之后是分号.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读