【发布时间】:2011-06-20 19:21:40
【问题描述】:
我目前正在尝试基于编译器标志定义一个函数。如果设置了 TRACE 标志,那么我想定义一个宏来将信息传递给跟踪组件。
#define TRACERPTR(Reporter * pReporter, traceComponent eComponent, traceLevel eLevel, string sFormat, formatArgs...) \
if (pReporter != NULL) { pReporter->trace(eComponent, eLevel, sFormat, ##formatArgs); }
Reporter 是一个类,定义在同一个 .h 文件中,位于此宏上方。我需要传递一个reporter对象的指针,然后用它来调用trace函数。
但是,我得到一个编译器错误:
错误:“*”可能不会出现在宏中 参数列表
我很好奇如果我只是删除“*”会发生什么——这会导致错误“宏参数必须以逗号分隔”。
知道我在这里做错了什么吗?
【问题讨论】: