Cpp : How to understand and/or debug complex macros?

标签 c macros c-preprocessor variadic-macros stringification

我正在尝试学习我发现并不那么容易的预处理器技巧( Can we have recursive macros?Is there a way to use C++ preprocessor stringification on variadic macro arguments?C++ preprocessor __VA_ARGS__ number of argumentsVariadic macro trick ,...)。

我知道 -E 选项可以查看预处理器整个过程的结果,但我想知道是否存在选项或方法来逐步查看结果。事实上,有时很难理解当一个宏调用一个调用宏的宏时会发生什么……使用禁用上下文、绘制蓝色的机制……简而言之,我想知道是否有一种带有断点和其他功能的预处理器调试器工具已存在。

(不要回答说使用预处理器指令是危险的、丑陋的、可怕的,不是 C 中的良好实践,会产生不可读的代码......我知道这一点,但这不是问题)。

最佳答案

是的,此工具作为 Eclipse IDE 的一项功能而存在。我认为访问该功能的默认方法是将鼠标悬停在您想要查看展开的宏上(这将显示完整的展开),然后按键盘上的 F2 (出现一个弹出窗口,允许您逐步完成每个扩展)。

当我使用这个工具来了解有关宏的更多信息时,它非常有帮助。只需稍加练习,您就不再需要它了。

如果有人对如何使用此功能感到困惑,我在 Eclipse 文档 here 上找到了一个教程。 .

关于Cpp : How to understand and/or debug complex macros?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54158219/

相关文章:

mysql - 将时间戳转换为 MYSQL_TIME

c++ - 是否可以在 C++ 中使用作用域类型作为宏名称?

c - 如何使用我的字符串将 "interleave"C/C++ 源代码(仅在适当位置的内部函数中)?

c - 如何让 C 在给定数字宏值的情况下找到宏标识符?

c - 随机改变结构数组的值

使用数组进行 C 编程

C Fread 将文本文件拆分为 block

c++ - 在 Visual Studio 中从可变参数计数宏为常量参数计数宏提供输入

macros - 有没有办法从文档中隐藏宏模式?

fprintf() 的跨平台宏包装器