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. Paolo