From: Bruno H. <br...@cl...> - 2003-10-27 19:15:17
|
Sam wrote: > > I think C99 allows non-constant elements in aggregate initializers. > > C++ also allows non-constant elements in static aggregate initializers. > > so you are saying that it's not that they suddenly forbade this, but > that it has always been technically forbidden but was available as an > extension from some C vendors and has now been standardized in c++ and > c99. Right. And before ANSI C you could not even assign structs like this: struct foo instance1, instance2; instance1 = instance2; You had to use bcopy() on the addresses. (Although you could 'return' structs, and then the compiler would generate the bcopy() of the return value for you.) > > Yes I think the ability to work around a severe compiler problem with > > just a little patch in a preprocessor is a good reason to keep > > 'varbrace' alive. > > Just a second! > if both C++ and C99 permit this _and_ also variables in the middle of > the block, then why don't we just drop support for pre-C99? So few compilers do support C99. In particular, to my knowledge, MSVC 7 isn't C99 compliant. (It has none of <stdbool.h>, <stdint.h>, <inttypes.h>). So dropping C99 means dropping the WIN32_NATIVE port of clisp. Which I won't agree to. Bruno |