也许我不是来自这个星球,但在我看来,以下应该是一个语法错误:
int a[] = {1,2,}; //extra comma in the end
但事实并非如此。当这段代码在Visual Studio上编译时,我很惊讶,但我已经学会了不相信MSVC编译器,就c++规则而言,所以我检查了标准,它<强> < / >强也被标准所允许。如果你不相信的话,语法规则可以参考8.5.1。
为什么允许这样做?这可能是一个愚蠢无用的问题,但我希望你明白我为什么要问这个问题。如果这是一个通用语法规则的子案例,我可以理解——他们决定不让通用语法变得更困难,只是不允许在初始化列表的末尾出现多余的逗号。但是不,额外的逗号是允许的< >强明确< / >强。例如,在函数调用参数列表的末尾不允许有多余的逗号(当函数接受...
时),这是正常的。
那么,还有什么特别的原因,这个多余的逗号是允许< >强明确< / >强 ?