首页 新闻 会员 周边 捐助

VS2003如何实现可变参数宏

0
悬赏园豆:5 [已关闭问题]

VS2008支持可变参数宏定义,格式如下:

#define LOG(fmt, ...) sLog.Write(fmt, ##__VA_ARGS__)

 

其中Write的函数原型为:

void Log::Write(const char *fmt, ...)

 

但上述的宏定义在VS2003并不支持,那要实现可变参数宏的话,VS2003应该如何做?

genuping的主页 genuping | 初学一级 | 园豆:190
提问于:2010-03-05 13:41
< >
分享
其他回答(1)
0

有以下四种方式:

(1)引用系统变参函数:

(2)新的C99规范支持了可变参数的宏,具体使用如下:

(3)这个很雷人:(用‘_’来代替‘,’,否则报错或者警告实参太多或者实参个数不一致)

(4)使用##:

详细参考此文:

http://blog.csdn.net/weide001/archive/2009/06/12/4263114.aspx

风影极光 | 园豆:1573 (小虾三级) | 2010-03-05 15:00
(1) 引用系统变参函数:程序发布时宏调用的参数会留在程序的正文中,会造成程序的臃肿。 (2)VS2003貌似不支持C99的这一规范。 (3)用'_'和'##'的形式太怪异,在代码中的形式是无法接受的。
支持(0) 反对(0) genuping | 园豆:190 (初学一级) | 2010-03-05 16:41
0

我连2003都没见过。。。顶个,朋友辛苦啊。还要用那个~

idoku | 园豆:267 (菜鸟二级) | 2010-03-07 11:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册