也许我不是来自这个星球,但在我看来,以下内容应该是一个语法错误:
int a[] = {1,2,}; //extra comma in the end
但事实并非如此。当这段代码在Visual Studio上编译时,我很惊讶,但我已经学会了不信任MSVC编译器,因为C++规则是相关的,所以我检查了标准,它的也是标准允许的。如果你不相信我,你可以看8.5.1的语法规则。
为什么允许这样做?这可能是一个愚蠢而无用的问题,但我希望你理解我为什么要问这个问题。如果这是一般语法规则的子格,我会理解的-他们决定不让一般语法变得更加困难,只是为了不允许在初始化器列表的末尾使用多余的逗号。但是没有,额外的逗号是明确允许的,。例如,不允许在函数调用参数列表的末尾有多余的逗号(当函数接受...
时),这是正常的。
那么,有没有什么特别的原因让显式地允许使用这个多余的逗号呢?
https://stackoverflow.com/questions/7043372
复制相似问题