Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何通过预处理器运行diff文件以获取常量值_C_C Preprocessor_Preprocessor - Fatal编程技术网

C 如何通过预处理器运行diff文件以获取常量值

C 如何通过预处理器运行diff文件以获取常量值,c,c-preprocessor,preprocessor,C,C Preprocessor,Preprocessor,我有两个文件的差异。它们在实践中差别很小,但在实施中差别很大。一个使用预处理器常量设置位,另一个不使用。例如: < output(0x1020 + 0x80, 0x8FFF1FF4) > output(BASE + OFFSET, COMMAND | COMMAND_DO_SOMETHING | COMMAND_DO_SOMETHING_SUBCOMMAND1) //this works out to output(0x1100, 0x8FFFF1FF8) 输出(基本+偏移量,命令

我有两个文件的差异。它们在实践中差别很小,但在实施中差别很大。一个使用预处理器常量设置位,另一个不使用。例如:

< output(0x1020 + 0x80, 0x8FFF1FF4)
> output(BASE + OFFSET, COMMAND | COMMAND_DO_SOMETHING | COMMAND_DO_SOMETHING_SUBCOMMAND1) //this works out to output(0x1100, 0x8FFFF1FF8)
<输出(0x1020+0x80、0x8FFF1FF4)
>输出(基本+偏移量,命令|命令|执行|命令(执行)执行|执行(执行)子命令1 |//这将计算为输出(0x1100,0x8FF1FF8)
用手做减少是很耗时的(有很多)。理想情况下,我希望在宏中看到第一个,但第二个也可以(我可以重新区分,看看到底有什么不同,然后手动后退)


有没有办法将头文件扔向任意文件(当然,它不遵循C语法,因为它是一个diff)并查看弹出的内容?

如果我理解您的要求,您希望通过C预处理器运行一个文件,并在其中展开另一个头文件中定义的宏?您可以通过运行

$ gcc -imacros header.h -E diff-file
它将读取header.h以获取其中定义的任何宏,然后读取
diff文件
展开找到的任何宏并将结果回显到stdout。您可以对其他编译器执行类似的操作——可能创建一个具有

#include "header.h"
#include "diff-file"

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

这就是我想要的。由于diff文件的C语法不正确(其中包含额外的diff数据),我根本不希望C预处理器工作。我猜预处理器根本不在乎