GNU C中的可变参宏定义

GNU C 中支持三种形式的可变参宏定义,如下所示:

#define debug1(format, ...) fprintf (stderr, format, __VA_ARGS__)

#define debug2(format, args...) fprintf (stderr, format, args)

#define debug3(format, ...) fprintf (stderr, format, ## __VA_ARGS__)

其中,当可变参列表为空时,需要使用第三种定义方式,如下所示:

debug1("%s:%d\n", __FILE__, __LINE__);  // ok

debug2("%s:%d\n", __FILE__, __LINE__);  // ok

debug3("%s:%d\n", __FILE__, __LINE__);  // ok

debug1("debug1\n"); // error

debug2("debug2\n"); // error

debug3("debug3\n"); // ok

猜你喜欢

转载自blog.csdn.net/choumin/article/details/115031066
GNU