gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:14:59 24 4
gpt4 key购买 nike

有人向我指出我在某些 C++ 代码中有一个看起来像拼写错误的地方:

protected:
Foo x, y,;

我原以为结尾的逗号会出错,但显然不是?这是未定义的,还是发生了什么?大概是坏事,因为代码检查程序提示它。

最佳答案

相关语法产生式在§9.2:

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

逗号只允许分隔声明符(名称)。 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++,尾随逗号如何不是错误,会发生什么?富 x, y,;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14828986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com