[comp.std.c] Zero Length Arrays Allowed?

baalke@mars.jpl.nasa.gov (Ron Baalke) (12/01/89)

I've inherited some C code that had the following declaration in it:

     char tbi[0];

When I tried to compile this using Turbo C v2.0 and VAX C, it was flagged as
a fatal error. My question is this: are zero length arrays allowed in the
ANSI standard for C?

 Ron Baalke                       |    baalke@mars.jpl.nasa.gov 
 Jet Propulsion Lab  M/S 301-355  |    baalke@jems.jpl.nasa.gov 
 4800 Oak Grove Dr.               |
 Pasadena, CA 91109               |

dan@oresoft.uu.net (Daniel Elbaum) (12/05/89)

In article <2299@jato.Jpl.Nasa.Gov> baalke@mars.jpl.nasa.gov (Ron Baalke) writes
:I've inherited some C code that had the following declaration in it:
:
:     char tbi[0];
:
:When I tried to compile this using Turbo C v2.0 and VAX C, it was flagged as
:a fatal error. My question is this: are zero length arrays allowed in the
:ANSI standard for C?

	No.  The intent of the original coder would most likely be
	satisified by

		char tbi[];  /* incomplete type; size to be filled in later */

	or

		char tbi[1]; /* maybe at the end of a structure template */
	.
-- 
The disbelievers say: "Lo!  This is a mere wizard."  -Quran, Surah X

({uunet,tektronix,reed,sun!nosun,osu-cis,psu-cs}!oresoft!(dan)@oresoft.uu.net)