我有一个 C 文件(为简单起见,假设它不包含任何内容)。这个 C 文件需要几个文字数字的定义才能正确编译 - 我想弄清楚这些是哪些定义。
自然地,我们可以尝试编译该文件,但在某些时候我们会开始出现故障;通过一些故障恢复,我们可能会收到有关其他定义的故障通知。但是 - 这不是我想要的:
- 我对完成程序的编译不感兴趣。构建一个语法树(甚至是某种简化的语法树)就足够了。
- 我可以假设,除了缺少宏之外,该程序在语法上是正确的。对于 C 来说,这应该意味着它在语法上是正确的,句号。
- 我可以假设相关的宏都是大写的,即它们的形式是
[A-Z][A-Z_0-9]*
)。
获取未定义宏列表的替代方法是什么?
动机:实际上,我正在将一些东西输入动态编译库,并且我想事先检查是否已定义所有必要的宏,而不知道先验文件需要哪些宏(即,对于不同的输入文件可能是不同的宏)。