也许我不是来自这个星球,但在我看来,以下应该是语法错误:
int a[] = {1,2,}; //extra comma in the end
但事实并非如此。我很惊讶,当编译这段代码在Visual Studio中,但我已经学会了不至于C ++规则而言信任MSVC的编译器,所以我检查的标准,它是标准允许为好。如果你不相信我,你可以看到8.5.1的语法规则。
为什么允许这样做?这可能是一个愚蠢无用的问题,但我希望你理解我为什么这么问。如果它是一般语法规则的子案例,我会理解 - 他们决定不再使一般语法更难以在初始化列表的末尾禁止冗余逗号。但不,明确允许附加逗号。例如,在函数调用参数列表的末尾(当函数采用时...)不允许使用冗余逗号,这是正常的。
那么,是否有任何特殊原因明确允许这个冗余逗号?
DIEA
慕莱坞森
相关分类