On Jul 5, 2005, at 8:27 AM, Latchesar Ionkov wrote:
An example:
typedef struct {
....
arch_vcpu_info_t arch;
} vcpu_info_t;
For x86_32 and x86_64 arch_vcpu_info_t is defined as:
typedef struct {
} arch_vcpu_info_t;
That's undefined behavior by the C99 standard, as far as I can tell.
You are supposed to have a non-empty list of identifiers and types
in any given struct or union.
Definitely not good for portability.
Dave
Lucho
On Mon, Jul 04, 2005 at 07:36:58PM -0700, David Leimbach said:
On 7/2/05, Charles Forsyth <[EMAIL PROTECTED]> wrote:
it cant be worked around without breaking the cross
platform features of their headers.
sounds brilliantly portable to me.
what do they do? insert 0-length padding areas
to make these structures `portable'?
Yeah, it's undefined what happens if a struct is empty in C99.
Seems a
really silly thing for someone to rely on. What are they trying to
accomplish? The only thing I can think of is some kind of type
safety
based on a tag generated for a unique "struct". They should probably
make it wrap a void * or something.