[lttng-dev] [PATCH] rculfhash: use do {} while (0) for dbg_printf()

Lai Jiangshan laijs at cn.fujitsu.com
Mon May 7 05:53:37 EDT 2012


found by clang(make CC=clang).

avoid empty statement.
-------------------------
if (condition)
	dbg_printf()  /* forget ";", but compiler say nothing if dbg_printf() is empty */
statement;
-------------------------

also add printf format check.
(we can use gcc extention "__printf(1, 2)" to declare a dummy inline function
to do the check, but I use "printf()" directly here)

Signed-off-by: Lai Jiangshan <laijs at cn.fujitsu.com>
---
diff --git a/rculfhash-internal.h b/rculfhash-internal.h
index 284125a..d7cec95 100644
--- a/rculfhash-internal.h
+++ b/rculfhash-internal.h
@@ -25,11 +25,17 @@
  */
 
 #include <urcu/rculfhash.h>
+#include <stdio.h>
 
 #ifdef DEBUG
 #define dbg_printf(fmt, args...)     printf("[debug rculfhash] " fmt, ## args)
 #else
-#define dbg_printf(fmt, args...)
+#define dbg_printf(fmt, args...)				\
+do {								\
+	/* do nothing but check printf format */		\
+	if (0)							\
+		printf("[debug rculfhash] " fmt, ## args);	\
+} while (0)
 #endif
 
 #if (CAA_BITS_PER_LONG == 32)



More information about the lttng-dev mailing list