我目前正试图定义一个基于编译器标志的函数。如果设置了跟踪标志,那么我想定义一个宏来将信息传递给跟踪组件。

#define TRACERPTR(Reporter * pReporter, traceComponent eComponent, traceLevel eLevel, string sFormat, formatArgs...) \
if (pReporter != NULL) { pReporter->trace(eComponent, eLevel, sFormat, ##formatArgs); }

Reporter是一个类,定义在同一个.h文件中,位于该宏之上。我需要传递一个reporter对象的指针,然后用它调用trace函数。
但是,我得到一个编译器错误:
错误:宏中不能出现“*”
参数列表
我很好奇如果我删除“*”——这会导致错误“宏参数必须用逗号分隔”。
你知道我在这里做错了什么吗?

最佳答案

据我所知,至少在C语言中,宏参数不是类型化的。这都是符号替换。只需使用pReporter而不是Reporter * pReporterReporter pReporter
(我想这同样适用于宏的其他参数。)

关于c++ - 宏参数列表中的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6416294/

10-10 01:28