C99 parsing error?

Joseph S. Myers jsm28@cam.ac.uk
Sun May 18 14:19:00 GMT 2003


On Sun, 18 May 2003, Jamie Lokier wrote:

> Is it really not permitted to write this in C99?:
> 
> 	while (--length >= 0)
> 	  {
> 	  loop:
> 	    int byte = *data++;
> 
> GCC 3.2.2 reports: parse error before "int"
> If I replace "loop:" with "loop:;", it's fine.
> Perhaps GCC is correct to reject this, but it is surprising.

A compound statement is a sequence of statements and declarations; only
statements can have labels; see 6.8.1 and 6.8.2.  The existing GCC
extension of attributes on labels means that we don't accept labels on
declarations as an extension either.

-- 
Joseph S. Myers
jsm28@cam.ac.uk



More information about the Gcc mailing list