如何通过预处理器 运行 差异文件获取常量值
How to run a diff file through a preprocessor to get value of constants
我有两个文件的差异。它们在实践中差别很小,但在实施中差别很大。一个使用预处理器常量来设置位,而另一个不使用。例如:
< output(0x1020 + 0x80, 0x8FFF1FF4)
> output(BASE + OFFSET, COMMAND | COMMAND_DO_SOMETHING | COMMAND_DO_SOMETHING_SUBCOMMAND1) //this works out to output(0x1100, 0x8FFFF1FF8)
手工减少是很费时间的(有很多这样的)。理想情况下,我希望在宏中看到第一个,但第二个也能正常工作(我可以重新比较以查看实际不同然后手动倒退)。
有没有办法在任意文件中抛出一个头文件(当然它不遵循 C 语法,因为它是一个 diff),看看会弹出什么?
如果我理解您的问题,您想通过 C 预处理器 运行 一个文件并在其中扩展另一个头文件中定义的任何宏?您可以通过 运行ning
使用 gcc 做到这一点
$ gcc -imacros header.h -E diff-file
将读取 header.h 以获取其中定义的任何宏,然后读取 diff-file
扩展找到的任何宏并将结果回显到标准输出。您也许可以用其他编译器做一些类似的事情——也许创建一个文件
#include "header.h"
#include "diff-file"
然后是 运行 cc -E file
。您将在输出中获得 header.h 中其他内容的副本,但您可以忽略它。
我有两个文件的差异。它们在实践中差别很小,但在实施中差别很大。一个使用预处理器常量来设置位,而另一个不使用。例如:
< output(0x1020 + 0x80, 0x8FFF1FF4)
> output(BASE + OFFSET, COMMAND | COMMAND_DO_SOMETHING | COMMAND_DO_SOMETHING_SUBCOMMAND1) //this works out to output(0x1100, 0x8FFFF1FF8)
手工减少是很费时间的(有很多这样的)。理想情况下,我希望在宏中看到第一个,但第二个也能正常工作(我可以重新比较以查看实际不同然后手动倒退)。
有没有办法在任意文件中抛出一个头文件(当然它不遵循 C 语法,因为它是一个 diff),看看会弹出什么?
如果我理解您的问题,您想通过 C 预处理器 运行 一个文件并在其中扩展另一个头文件中定义的任何宏?您可以通过 运行ning
使用 gcc 做到这一点$ gcc -imacros header.h -E diff-file
将读取 header.h 以获取其中定义的任何宏,然后读取 diff-file
扩展找到的任何宏并将结果回显到标准输出。您也许可以用其他编译器做一些类似的事情——也许创建一个文件
#include "header.h"
#include "diff-file"
然后是 运行 cc -E file
。您将在输出中获得 header.h 中其他内容的副本,但您可以忽略它。