----- Original Message ----- > Marc-André Lureau <[email protected]> writes: > > > The C standard has the initial value at 0 and the subsequent values > > incremented by 1. No need to set this explicitely. > > > > This will prevent from artificial "gaps" when compiling out some enum > > values and having unnecessarily large MAX values & enums arrays. > > Yes, but it also risks entertaining mishaps like compiling this one > > typedef enum Color { > COLOR_WHITE, > #if defined(NEED_CPU_H) > #if defined(TARGET_S390X) > COLOR_BLUE, > #endif /* defined(TARGET_S390X) */ > #endif /* defined(NEED_CPU_H) */ > COLOR_BLACK, > } Color; > > in s390x-code (COLOR_BLACK = 2) and in target-independent code > (COLOR_BLACK = 1), then linking the two together.
This is also true with other kind of types, like struct. One of the main reason why we should have schemas for target-only and the NEED_CPU_H is a temporary working hack. > > > Signed-off-by: Marc-André Lureau <[email protected]> > > --- > > scripts/qapi.py | 7 ++----- > > 1 file changed, 2 insertions(+), 5 deletions(-) > > > > diff --git a/scripts/qapi.py b/scripts/qapi.py > > index 52099332f1..9d075440d3 100644 > > --- a/scripts/qapi.py > > +++ b/scripts/qapi.py > > @@ -1979,14 +1979,11 @@ typedef enum %(c_name)s { > > ''', > > c_name=c_name(name)) > > > > - i = 0 > > for value in enum_values: > > ret += mcgen(''' > > - %(c_enum)s = %(i)d, > > + %(c_enum)s, > > ''', > > - c_enum=c_enum_const(name, value, prefix), > > - i=i) > > - i += 1 > > + c_enum=c_enum_const(name, value, prefix)) > > > > ret += mcgen(''' > > } %(c_name)s; >
