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

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

概述有人向我指出,我在某些c代码中看起来像是一个拼写错误: protected: Foo x, y,; 我原本以为尾随逗号会出错,但显然它不是?这是不确定的,或者会发生什么?可能是坏事,因为代码检查程序抱怨它. 相关的语法产生见§9.2: member-declarator-list: member-declarator member-declarator-list , membe 有人向我指出,我在某些c代码中看起来像是一个拼写错误:

protected:    Foo  x,y,;

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

解决方法@H_419_18@ 相关的语法产生见§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添加的,以简化编写源代码生成器. (即使有这么简单的要求,预处理器也经常会遇到困难.)通常,简单的生成器可能会避免创建具有多个名称的声明,因为由于语法复杂,它可能是一堆蠕虫.另一方面,一个空的声明组成;允许,在成员函数定义之后是分号.

总结

以上是内存溢出为你收集整理的c,尾随逗号如何不是错误,会发生什么? Foo x,y ,;全部内容,希望文章能够帮你解决c,尾随逗号如何不是错误,会发生什么? Foo x,y ,;所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1214786.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存