У меня есть код, содержащий множество сложных кодов ошибок #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 или любого другого компилятора были бы полезны.