宏替换,可变参数的问题

sanwater_001 2009-09-14 01:17:54
实现描述如下:
1、因调试时需要打印较多打印信息
2、不调试时,不打印信息
3、所以添加了一个宏的调试开关,在C++ Bulider中
#define DEBUG(format,args...) sprintf(buf,format,##args),其中buf全局数组

问题描述如下:
添加上述宏后,编译器出现下面错误提示:
[C++ Error] Unit1.cpp(18): E2220 Invalid macro argument separator

问题是,
1、C++ Bulider是不是不支持可变参数宏,
2、我想在该编译器下,实现宏调试开关,该如何实现?

谢谢帮助和提示!
...全文
159 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sfengnet 2009-10-30
  • 打赏
  • 举报
回复
#define DEBUG \
sprintf

不要带参数
haiandj 2009-10-20
  • 打赏
  • 举报
回复
建议用自己写个调试函数,不建议使用宏传递参数,容易出错还难理解
mgsg 2009-10-20
  • 打赏
  • 举报
回复
学习
柯本 2009-09-16
  • 打赏
  • 举报
回复
BCB6以下不支持C99的可变宏,CB2007以上可以,参见:
http://topic.csdn.net/u/20070902/16/b92ec1f2-a5ee-45e4-bc8f-351f5796b7f4.html
  • 打赏
  • 举报
回复
#define DEBUG sprintf
否则定义一个空的sprintf类似的函数替换成这个.

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧