Why does this happen ??

Michael Meissner meissner@cygnus.com
Thu Nov 30 10:50:00 GMT 2000


On Thu, Nov 30, 2000 at 04:11:37PM -0200, Alexandre Oliva wrote:
> On Nov 30, 2000, Davy Durham <david.durham@wcom.com> wrote:
> 
> >     char s[]="Hello World";
> 
> > this will make a stack array of 11+1 chars containing "Hello World"
> 
> Initializing an automatic array isn't permitted in ISO C,
> unfortunately.  GCC supports it as an extension.

You are thinking of pre-ISO compilers that only allow initialization of auto
scalar members.  ISC C89 (and presumably C99) does allow initialization of auto
arrays and structures (though if you aren't going to modify it, you should
declare it static to avoid having to do the copy at runtime).  What is a GCC
extension to C89 (I don't remember about C99) is an initialization to an
array/struct that doesn't involve static members:

	int foo(int i){
	  auto struct bar { int a, int b; } s = { i, 0 };
	}

-- 
Michael Meissner, Red Hat, Inc.
PMB 198, 174 Littleton Road #3, Westford, Massachusetts 01886, USA
Work:	  meissner@redhat.com		phone: +1 978-486-9304
Non-work: meissner@spectacle-pond.org	fax:   +1 978-692-4482


More information about the Gcc mailing list