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(...) > >>+#endif > > > >The 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. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html