bug-textutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: textutils -> od 2.0.14 bug - solved


From: Bob Proulx
Subject: Re: textutils -> od 2.0.14 bug - solved
Date: Sun, 19 May 2002 11:46:40 -0600

> From: "Jim Meyering" <address@hidden>
> 
> > +/* Ensure that for each member of `enum size_spec' there is an
> > +   initializer in the width_bytes array.  */
> > +struct assert_width_bytes_matches_size_spec_decl
> > +{
> > +  int t1[sizeof width_bytes / sizeof width_bytes[0] - N_SIZE_SPECS];
> > +  int t2[N_SIZE_SPECS - sizeof width_bytes / sizeof width_bytes[0]];
> > +};
> > +
> 
> I like the idea of verifying that the code is consistent.  But the above
> structure assumes that zero-length arrays are valid, and they are not in
> standard C (at least not in C90, I suppose C99 could have added that?).

I am slipping into this discussion late but I think a misunderstanding
exists.  width_bytes[0] is the first element of the array, which is
perfectly valid.  sizeof width_bytes[0] is the number of bytes of the
first element of the array.  That should always be non-zero.  I don't
see where the compiler is seeing a zero sized array for this.

> As an alternative, you could have an N_WIDTH_BYTES entry at the end of the
> width_bytes array, and then have something like:
> 
> #if N_SIZE_SPECS != N_WIDTH_BYTES
> #error Array size mismatch
> #endif
> 
> --
> Eric Backus
> R&D Design Engineer
> Agilent Technologies, Inc.
> 425-335-2495 Tel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]