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.


Reply via email to