Bahadir Balban <krupiyer@xxxxxxxxx> writes: > I see that it works when the array is a local variable. But in the > following piece of code: > > #include <stdio.h> > > // const int const_asize = 10; > #define define_asize = 10; > > int array[define_asize] = {1,2,3,4,5,6,7,8,9,0}; > > int main(int argc, char * argv[]) > { > > return 0; > } > > > With a define it compiles with no errors, however if you replace it > with the constant variable, I get the following error: > > "error: variable-size type declared outside of any function" > "error: variable-sized object may not be initialized" > > This is on gcc version 3.3.5 compiling with the following: > > gcc -o consttest main.c > > adding a -std=gnu99 does not make any difference. > > My opinion is that it is not the best behaviour to differentiate > between a literal and a const int when they're declared global, but > make no distinction when they're local. What do you think? This behaviour is specified by the C standard. The C standard spells out what precisely may be used when declaring the size of an array. Const variables are not permitted. Obviously it would be possible for gcc to extend the C standard here, but such extensions are generally only supported when there is a real use for them. Ian