如何解决int a[] = {1,2,}; 为什么允许在初始化列表中使用尾随逗号?
它使生成源代码变得更容易,并且还可以编写可以在以后轻松扩展的代码。考虑添加额外条目所需的内容:
int a[] = {
1,
2,
3
};
…您必须将逗号添加到现有行 并 添加新行。 将其与三个后面已经 有逗号的情况进行比较,您只需添加一行。同样,如果您想删除一行,您可以这样做而不必担心它是否是最后一行,并且您可以重新排序行而无需摆弄逗号。基本上,这意味着你对待线条的方式是一致的。
output("int a[] = {");
for (int i = 0; i < items.length; i++) {
output("%s, ", items[i]);
}
output("};");
解决方法
也许我不是来自这个星球,但在我看来,以下应该是语法错误:
int a[] = {1,2,}; //extra comma in the end
但事实并非如此。当这段代码在 Visual Studio 上编译时我很惊讶,但我已经学会了不信任 MSVC 编译器就 C++ 规则而言,所以我检查了标准,它 _ 也_ 被标准允许。不信的话可以看 8.5.1 的语法规则。
为什么允许这样做?这可能是一个愚蠢无用的问题,但我希望你明白我为什么要问。如果它是一般语法规则的子案例,我会理解 -
他们决定不让一般语法变得更加困难,只是不允许在初始化列表末尾使用多余的逗号。但是不,额外的逗号是 _ 明确
允许的。...
例如,在函数调用参数列表的末尾(当函数采用 时)不允许有多余的逗号, _这是正常的 。
那么,再次明确 允许这种多余的逗号有什么特别的原因吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。