VS2008支持可变参数宏定义,格式如下:
#define LOG(fmt, ...) sLog.Write(fmt, ##__VA_ARGS__)
其中Write的函数原型为:
void Log::Write(const char *fmt, ...)
但上述的宏定义在VS2003并不支持,那要实现可变参数宏的话,VS2003应该如何做?
有以下四种方式:
(1)引用系统变参函数:
(2)新的C99规范支持了可变参数的宏,具体使用如下:
(3)这个很雷人:(用‘_’来代替‘,’,否则报错或者警告实参太多或者实参个数不一致)
(4)使用##:
详细参考此文:
http://blog.csdn.net/weide001/archive/2009/06/12/4263114.aspx
我连2003都没见过。。。顶个,朋友辛苦啊。还要用那个~