static void foo (void) { } void bar (void) { int i[foo,1]; } --> > gcc-3.4 -Wall -c ~/foo.c /home/welinder/foo.c: In function `bar': /home/welinder/foo.c:2: error: parse error before ',' token Adding () makes things work.
That seems like exactly the correct behaviour to me. Where do you see the bug?
I would be claiming that "foo,1" means the same as "(foo,1)" which is a constant expression with the value 1. Thus I want a one-element array.
In the [], there can only be an assignment-expression. A comma operator is not an assignment-expression.