如何通过预处理程序运行差异文件以获取常量值

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

我有两个文件的区别。它们在实践中略有不同,但在实现上却相差很大。一种使用预处理器常量设置位,另一种不使用。例如:

< output(0x1020 + 0x80, 0x8FFF1FF4)
> output(BASE + OFFSET, COMMAND | COMMAND_DO_SOMETHING | COMMAND_DO_SOMETHING_SUBCOMMAND1) //this works out to output(0x1100, 0x8FFFF1FF8)

手工进行减少是耗时的(其中有很多)。理想情况下,我想在宏中看到第一个宏,但是第二个宏也可以工作(我可以重新比较以查看实际差异,然后手动返回)。

有没有一种方法可以将头文件扔到任意文件上(当然,它不遵循C语法,因为它是一个差异),然后看看弹出了什么?

c c-preprocessor preprocessor
1个回答
1
投票

如果我理解您的要求,您想通过C预处理程序运行文件,并在其中扩展另一个头文件中定义的宏吗?您可以通过运行

使用gcc来做到这一点
$ gcc -imacros header.h -E diff-file

它将读取header.h以获取其中定义的任何宏,然后读取diff-file扩展找到的所有宏并将结果回显到stdout。您可能可以使用其他编译器执行类似的操作-也许创建一个具有

的文件
#include "header.h"
#include "diff-file"

然后运行cc -E file。您将在输出中的header.h中获得其他内容的副本,但是您可以忽略它。

© www.soinside.com 2019 - 2024. All rights reserved.