gpt4 book ai didi

c++ - 跟踪宏扩展

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:09 24 4
gpt4 key购买 nike

我想跟踪宏扩展 - 宏扩展了多少次以及扩展发生时的参数是什么。

例如,

我有一个宏可能是这样的:

#define mymacro(x) int x

在我的代码中我有这样的东西:

mymacro(a);
mymacro(b);

在预处理器扩展结束时(哦,是的,有没有办法让特定的宏成为最后扩展?),我想知道mymacro被使用了多少次以及传递的args是什么.在这种情况下,它将是 2 次,args 将是 a 和 b。

我正在研究 boost-preprocessor 库。他们有 BOOST_PP_ARRAY,但我不知道如何将其设为“静态”,以便以后使用。

我在 BOOST_PP_COUNTER 中找到了一些东西。看起来 BOOST_PP_COUNTER 是可以在预处理器短语中保持其状态的东西。但我仍然不清楚如何做我想做的事。

最佳答案

这样的事情怎么样?

#include <iostream>

int m_counter = 0;
const char *m_arguments[32] = { 0 };

#define COUNT_M(a) m_arguments[m_counter++] = #a;
#define M(a) COUNT_M(a) int a

int main()
{
M(x);
M(y);

for (int i = 0; i < m_counter; i++)
{
std::cout << "m_arguments[" << i << "] = \"" << m_arguments[i] << "\"\n";
}
}

关于c++ - 跟踪宏扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9509387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com