Tengo un código que tiene muchos códigos de error #define complicados que no son fáciles de descodificar ya que están anidados en varios niveles.¿Cómo puedo generar una lista de valores #define a partir del código C?
¿Hay alguna manera elegante en que pueda obtener una lista de #defines con sus valores numéricos finales (o lo que sea)?
A modo de ejemplo:
<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)
me gustaría tener un gran número de #defines similares a juego ERROR _ [\ w _] + que me gustaría enumerar de manera que siempre tengo una lista de códigos de error que el programa puede producir. Necesito el valor numérico porque eso es todo lo que el programa imprimirá (y no, no es una opción imprimir una cadena en su lugar).
Las sugerencias para gcc o cualquier otro compilador serían útiles.
¿Ha considerado ** usar constantes reales ** en lugar de #defines? –
Cambiar el código a constelaciones no sería práctico ya que se hereda de una fuente ascendente. – djs