【发布时间】:2012-03-19 13:04:42
【问题描述】:
我想跟踪宏扩展 - 宏扩展了多少次,扩展发生时的 args 是什么。
例如,
我有一个宏可能看起来像这样:
#define mymacro(x) int x
在我的代码中我有这样的东西:
mymacro(a);
mymacro(b);
在预处理器扩展结束时(哦,是的,有没有办法让特定的宏成为最后一个扩展?),我想知道 mymacro 被使用了多少次,传递的 args 是什么.在这种情况下,它将是 2 次,并且 args 将是 a 和 b。
我正在研究 boost-preprocessor lib。他们有 BOOST_PP_ARRAY,但我不知道如何将其设为“静态”,以便以后使用。
我在 BOOST_PP_COUNTER 中找到了一些东西。看起来 BOOST_PP_COUNTER 是可以在预处理器短语中保持其状态的东西。但我仍然不清楚如何做我想做的事。
【问题讨论】:
-
这可以通过在宏中添加一行来输出编译器消息来完成,如果你的编译器支持的话。
-
你能说得更具体点吗?我正在使用 Clang
-
我还不是很清楚,但是您正在谈论过去对正在发生的事情的检查,并希望结果(即,它被调用的内容等)在预处理时可用,以便您可以用它做点什么,对吧?
-
是的,这就是我想做的事
-
我希望你不要期望这个计数会在编译单元中保持...
标签: c++ macros boost-preprocessor