On Wed, Sep 19, 2012 at 4:02 PM, Paolo Bonzini <pbonz...@redhat.com> wrote: > Il 19/09/2012 17:58, Paolo Bonzini ha scritto: >> Il 19/09/2012 17:46, Peter Maydell ha scritto: >>> On 19 September 2012 15:31, Paolo Bonzini <pbonz...@redhat.com> wrote: >>>> It is #defined to 1. >>>> >>>> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >>>> --- >>>> scripts/qapi.py | 4 +++- >>>> 1 file modificato, 3 inserzioni(+). 1 rimozione(-) >>>> >>>> diff --git a/scripts/qapi.py b/scripts/qapi.py >>>> index 057332e..afc5f32 100644 >>>> --- a/scripts/qapi.py >>>> +++ b/scripts/qapi.py >>>> @@ -156,7 +156,9 @@ def c_var(name, protect=True): >>>> # GCC http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/C-Extensions.html >>>> # excluding _.* >>>> gcc_words = set(['asm', 'typeof']) >>>> - if protect and (name in c89_words | c99_words | c11_words | >>>> gcc_words): >>>> + # namespace pollution: >>>> + polluted_words = set(['unix']) >>>> + if protect and (name in c89_words | c99_words | c11_words | gcc_words >>>> | polluted_words): >>>> return "q_" + name >>>> return name.replace('-', '_').lstrip("*") >>>> >>> >>> I can't help thinking this is fighting a losing battle, and we should just >>> always prefix everything to avoid clashes. >> >> That would be so ugly that it would be almost useless. Plus there would >> be a huge amount of code to convert. > > Also, not really that bad: > > $ gcc -dM -x c /dev/null -E|grep define\ [^_] > #define unix 1 > #define linux 1 > > I don't expect other OSes to be significantly worse. Remember this > breakage is not limited to QAPI-generated code, it would happen in > normal code as well. I learnt today that a variable named "unix" is not > kosher.
I got only this from OpenBSD: #define sparc 1 Mingw has these: #define WIN32 1 #define WINNT 1 #define i386 1 I'd suppose the full list from GCC is this: $ grep -hr 'builtin_define_std' gcc/config |sed -n 's/.*"\([^"]*\)".*/\1/p'|sort -u AVR BFIN CRIS GNU_CRIS GO32 LANGUAGE_ASSEMBLY LANGUAGE_C LANGUAGE_C_PLUS_PLUS LANGUAGE_OBJECTIVE_C MACH MIPSEB MIPSEL MOXIE MSDOS PPC R3000 R4000 REVARGV SYSTYPE_BSD SYSTYPE_SVR4 VMS WIN32 WIN64 WINNT bfin cris fr30 h8300 host_mips hp800 hp9000 hp9k8 hpux i386 linux mc68000 mc68010 mc68020 mc68030 mc68040 mc68060 mc68332 mcpu32 mep moxie pdp11 powerpc sgi sparc spectrum sun tpf unix vms xstormy16 > > Paolo >