Как я могу сгенерировать список значений #define из кода C?

У меня есть код, содержащий множество сложных кодов ошибок #define, которые нелегко декодировать, поскольку они вложены на нескольких уровнях.

Есть ли какой-нибудь элегантный способ получить список #define с их окончательными числовыми значениями (или какими-либо еще)?

В качестве примера:

<header1.h>
#define CREATE_ERROR_CODE(class, sc, code) ((class << 16) & (sc << 8) & code)
#define EMI_MAX 16

<header2.h>
#define MI_1 EMI_MAX

<header3.h>
#define MODULE_ERROR_CLASS MI_1
#define MODULE_ERROR_SUBCLASS 1
#define ERROR_FOO CREATE_ERROR_CODE(MODULE_ERROR_CLASS, MODULE_ERROR_SUBCLASS, 1)

У меня было бы большое количество похожих #define, соответствующих ERROR_ [ \ w _] +, которые я хотел бы перечислить, чтобы у меня всегда был текущий список кодов ошибок, которые программа может выводить. Мне нужно числовое значение, потому что ' s вся программа распечатает (и нет, вместо этого распечатать строку невозможно).

Предложения для gcc или любого другого компилятора были бы полезны.

5
задан Brian Tompsett - 汤莱恩 3 March 2016 в 22:29
поделиться