如何执行C预处理程序宏的逐步扩展?

问题描述 投票:3回答:1

macro expand-once

expression

macro exp1expression

(此命令尚未实现。)

显示扩展在expression中显式显示的预处理器宏调用的结果。在该扩展中出现的宏调用保持不变。此命令使您可以更清楚地看到特定宏的效果,而不会因进一步扩展而感到困惑。由于GDB仅扩展宏,但不解析结果,因此expression不必为有效表达式;它可以是任何令牌字符串。
多么令人讨厌的嘲笑!这样的功能将为概念上简单的迭代gdb脚本打下基础,该脚本可输出宏扩展的每个步骤,而这正是我要查找的信息。它是否碰巧由gdb交付对我来说是次要的,但是我确实希望以某种方式使它自动化-我厌倦了遍历代码并手工编写所有内容。

[在实现macro expand-oncegdb命令之前,是否还有其他编程方式来执行C预处理程序宏的逐步扩展?我想可能可以通过从cpp中转储宏定义,解析输出并制作某种“调用图”来实现,但也许我是天真的乐观主义者。

NOTE

:尽管赏金声明指出:“仅提供对库函数的引用以构建潜在的解决方案将不会获得赏金,”如果没有获得赏金资格的解决方案,我仍会接受这样的回答在奖励期结束之前发布。gdb有一个已记录但仍未实现的命令(从8.3版本开始),称为宏一次扩展。其目的是执行单步宏扩展,而无需递归到其他宏...
c-preprocessor
1个回答
0
投票
根据repository history,以下是ChangeLog的摘录,其可追溯到2002年:
© www.soinside.com 2019 - 2024. All rights reserved.