How can I generate a list of #define values from C code?

Posted by djs on Stack Overflow See other posts from Stack Overflow or by djs
Published on 2010-12-30T17:46:17Z Indexed on 2010/12/30 17:54 UTC
Read the original article Hit count: 161

Filed under:
|
|

I have code that has a lot of complicated #define error codes that are not easy to decode since they are nested through several levels.

Is there any elegant way I can get a list of #defines with their final numerical values (or whatever else they may be)?

As an example:

<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)

I would have a large number of similar #defines matching ERROR_[\w_]+ that I'd like to enumerate so that I always have a current list of error codes that the program can output. I need the numerical value because that's all the program will print out (and no, it's not an option to print out a string instead).

Suggestions for gcc or any other compiler would be helpful.

© Stack Overflow or respective owner

Related posts about c

    Related posts about gcc