Как запустить diff-файл через препроцессор, чтобы получить значение констант - PullRequest
0 голосов
/ 15 января 2020

У меня есть разница двух файлов. На практике они немного отличаются, но в реализации они сильно различаются. Один использует константы препроцессора для установки битов, а другой нет. Например:

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

Выполнение сокращения вручную занимает много времени (их много). В идеале я хотел бы видеть первое в макросах, но второе тоже работает (я могу повторно разглядеть, чтобы увидеть, что же на самом деле отличается, то go в обратном направлении вручную).

Есть ли способ бросить заголовочный файл в произвольный файл (конечно, он не соответствует синтаксису C, потому что это diff) и посмотреть, что всплывет?

1 Ответ

1 голос
/ 16 января 2020

Если я понимаю, что вы спрашиваете, вы хотите запустить файл через препроцессор C и в нем есть какие-либо макросы, определенные в другом заголовочном файле? Вы можете сделать это с помощью g cc, запустив

$ gcc -imacros header.h -E diff-file

, который прочитает header.h, чтобы получить все макросы, определенные в нем, затем прочитает diff-file, расширив все найденные макросы и выведя результат в stdout. Вы можете сделать что-то подобное с другими компиляторами - возможно, создайте файл с

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

и затем запустите cc -E file. Вы получите копию другого материала в header.h в выводе, но вы можете проигнорировать это.

...