[Spice-devel] [PATHCH win-qxl 4/8] display/qxldd.h: add DEBUG_PRINT_ONCE

Alon Levy alevy at redhat.com
Fri Apr 8 06:10:41 PDT 2011


On Fri, Apr 08, 2011 at 11:48:12AM +0200, Hans de Goede wrote:
> Hi,
> 
> nit pick, the usual way to do preprocessor macros with { } is:

I'll fix.

> 
> #define foo(x) \
>    do { \
>        bar \
>    } while (0)
> 
> This way you don't end up with a stray ; after the
> } which sometimes can lead to issues / warnings.
> 
> IE:
> 
> if (x)
>    foo(x);
> else
>    ...
> 
> Would not work with your way because it would expand to:
> 
> if (x)
> {
>    ...
> };
> else
> 
> And the ; makes the compiler not expect else, since there
> are now 2 statements between the if and the else
> 
> Regards,
> 
> Hans
> 
> 
> 
> On 04/07/2011 06:10 PM, Alon Levy wrote:
> >---
> >  display/qxldd.h |    9 +++++++++
> >  1 files changed, 9 insertions(+), 0 deletions(-)
> >
> >diff --git a/display/qxldd.h b/display/qxldd.h
> >index 0f90af1..7130b47 100644
> >--- a/display/qxldd.h
> >+++ b/display/qxldd.h
> >@@ -44,6 +44,15 @@
> >
> >  #define DEBUG_PRINT(arg) DebugPrint arg
> >
> >+#define DEBUG_PRINT_ONCE(arg)       \
> >+    {                               \
> >+        static int run = 0;         \
> >+        if (!run) {                 \
> >+            run = 1;                \
> >+            DebugPrint arg;         \
> >+        }                           \
> >+    }
> >+
> >  #ifdef DBG
> >  #define ASSERT(pdev, x) if (!(x)) { \
> >      DebugPrint(pdev, 0, "ASSERT(%s) failed @ %s\n", #x, __FUNCTION__); \


More information about the Spice-devel mailing list