Mam kod, który ma wiele skomplikowanych kodów błędów #define, które nie są łatwe do odkodowania, ponieważ są zagnieżdżone na kilku poziomach.Jak wygenerować listę wartości #define z kodu C?
Czy istnieje jakiś elegancki sposób, w jaki mogę uzyskać listę #defines z ich ostatecznymi wartościami liczbowymi (lub cokolwiek innego mogą być)?
Jako przykład:
<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)
chciałbym mieć dużą liczbę podobnych #defines pasującymi ERROR _ [\ w _] +, które chciałbym wyliczyć tak, aby zawsze mieć aktualną listę kodów błędów program może wyprowadzać. Potrzebuję wartości liczbowej, ponieważ to wszystko zostanie wydrukowane przez program (i nie, to nie jest opcja, aby wydrukować ciąg znaków).
Przydałyby się sugestie dotyczące gcc lub dowolnego innego kompilatora.
Czy brałeś pod uwagę ** przy użyciu stałych stałych ** zamiast #defines? –
Zmiana kodu na const nie byłaby praktyczna, ponieważ jest dziedziczona z poprzedniego źródła. – djs