On 09/12/2012 09:24 PM, Wenchao Xia wrote: > δΊ 2012-9-12 20:59, Eric Blake ει: >> On 09/11/2012 09:05 PM, Wenchao Xia wrote: >>>> Seriously? We require a C99-compliant compiler, which is required to >>>> treat the more compact version identically (all undefined names >>>> evaluate >>>> to 0 in the preprocessor), and HACKING doesn't mandate that we spell >>>> out >>>> a defined-ness check first. Okay, so configure adds -Wundef to the set >>>> of CFLAGS, but I fail to see why we want -Wundef (that's an >>>> anachronistic warning, only there to help you if you are writing code >>>> portable to K&R). >>>> >>> So if the preprocessor replaced __GNUC__ to 0, is there difference >>> between these two kinds of macoros? >>> #if __GNUC__ >= 4 >>> #if defined(__GNUC__) && __GNUC__ >=4 >> >> The only difference is whether -Wundef will warn, and I'm trying to >> argue that qemu's current use of -Wundef is pointless, as that warning >> exists solely for K&R compatibility, not for modern standard-compliant >> code correctness. >> > OK ,then I think > #if __GNUC__ >= 4 > .... > #else > [warn name space pollution may happen] > #endif > would be better.
It may be shorter, but it is definitely not better, at least not in the current context of qemu. Using the short form will fail a -Werror build, unless you also write a patch to qemu's configure to quit supplying -Wundef during builds. But as touching configure has a bigger impact to the overall qemu project, you're going to need a lot more buy-in from other developers that -Wundef is not helping qemu gain any portability, and that it is safe to ditch it (or get enough counter-arguments from other developers why qemu insists on the anachronistic style enforced by -Wundef, at which point you must comply and use the longer form). -- Eric Blake ebl...@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature