suppose BAR is defined and QWE is not. does the following do what I expect it to: struct { char* name; } foo [] = { { "ABC" #if defined(BAR) "ZZZ" #endif },{ #if defined(QWE) "ZOO" #endif "XYZ" }} i.e., create an array of length 2 with elements named "ABCZZZ" and "XYZ"? (it does, with GCC) is this portable? is this legal ANSI C? -- Sam Steingold (http://www.podval.org/~sds) running w2k <http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/> <http://www.mideasttruth.com/> <http://www.honestreporting.com> To understand recursion, one has to understand recursion first.