GCC-ANSI C conflict

Andrew Pinski pinskia@physics.uc.edu
Thu Jun 16 11:39:00 GMT 2005


On Jun 16, 2005, at 12:35 AM, Sankara Rameswaran wrote:

> hi
> according to ansi c standards all declarations have to to be at the
> starting of the block..
> which means the program below should not work.. i compiled this using 
> gcc

For C90 yes but not for C99.

>>> gcc (GCC) 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)
>>> Copyright (C) 2004 Free Software Foundation, Inc.
>>> This is free software; see the source for copying conditions.  There 
>>> is NO
>>> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
>>> PURPOSE.
>
> but it is working fine..
> this might be fine with g++ but i used gcc...
>
> int main()
> {
>   int i;
>   scanf("%d",&i);
>   int a[i];
>   a[i-1]=128;
>   printf("%d",a[i-1]);
> }
>
> is this a bug or just for compatability with c++...

Not this is for C99 compatibility.  In fact you are using VLAs which 
are part of C99
and not part of C++ at all.

Thanks,
Andrew Pinski



More information about the Gcc-bugs mailing list