c - How is it that "sizeof (char[0])" compiles just fine with GCC -
a colleague of mine inserted (void) sizeof (char[0])
@ end of multi line, macro alternative do {...} while (0)
apparently. have looked around can't find reference , surprises me compiles.
is valid c? love reference std.
if compile gcc -pedantic
, you'll warning message:
warning: iso c forbids zero-size array [-wpedantic]
the latest draft of c standard, n1570, section 6.7.6.2 (array declarators) paragraph 1 says:
if expression constant expression, shall have value greater zero.
this part of constraint, char[0]
constraint violation, requiring diagnostic conforming c compiler.
(it's not 100% clear that particular clause applies type name char[0]
in absence of declared object, general idea standard c not support zero-length arrays.)
gcc supports zero-sized arrays extension, documented here.
Comments
Post a Comment