|
From: | Xiao Guangrong |
Subject: | Re: [Qemu-devel] [PATCH v2 13/18] nvdimm: build namespace config data |
Date: | Mon, 31 Aug 2015 14:25:21 +0800 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 |
On 08/28/2015 07:59 PM, Stefan Hajnoczi wrote:
On Wed, Aug 26, 2015 at 06:42:01PM +0800, Xiao Guangrong wrote:On 08/26/2015 12:16 AM, Stefan Hajnoczi wrote:On Fri, Aug 14, 2015 at 10:52:06PM +0800, Xiao Guangrong wrote:+#ifdef NVDIMM_DEBUG +#define nvdebug(fmt, ...) fprintf(stderr, "nvdimm: " fmt, ## __VA_ARGS__) +#else +#define nvdebug(...) +#endifThe following allows the compiler to check format strings and syntax check the argument expressions: #define NVDIMM_DEBUG 0 /* set to 1 for debug output */ #define nvdebug(fmt, ...) \ if (NVDIMM_DEBUG) { \ fprintf(stderr, "nvdimm: " fmt, ## __VA_ARGS__); \ } This approach avoids bitrot (e.g. debug format string arguments have become outdated).Really good tips, thanks for your sharing.I forgot the do { ... } while (0) in the macro to make nvdebug("hello world"); work like a normal C statement.
Got it, will keep it in my mind.
[Prev in Thread] | Current Thread | [Next in Thread] |