int ar[] = { 1, 2, 3, };
这段代码合法吗?
(我的意图是)
int ar[] = { 1, 2, 3 };
答案 0 :(得分:5)
int ar[] = { 1, 2, 3, };
以上声明有效。
见C99,6.7.8:
6.7.8 Initialization Syntax 1 initializer: assignment-expression { initializer-list } { initializer-list , }
{ initializer-list , }
行明确允许在初始化列表中使用尾随逗号。
答案 1 :(得分:3)
是的,C89和GNU89中的初始化列表中都允许使用逗号。在采用可选/可变参数的宏中非常有用。
请参阅ANSI C standard中的3.5.7节,了解其定义的位置。
3.5.7 Initialization
Syntax
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }