¿Cómo definir un definir en C?

¿Es posible escribir un #define que define un #define ?

Por ejemplo:

 #define FID_STRS(x) #x #define FID_STRE(x) FID_STRS(x) #define FID_DECL(n, v) static int FIDN_##n = v;static const char *FIDS_##n = FID_STRE(v) 

Pero en lugar:

 #define FID_DECL2(n, v) #define FIDN_##nv \ FIDS_##n FID_STRE(v) 

FID_DECL funciona bien pero crea dos variables estáticas. ¿Es posible hacer que FID_DECL2 funcione y tener dos definiciones definidas?

No; El preprocesamiento se realiza en una sola pasada. Si desea o necesita un comportamiento más avanzado, considere usar otra herramienta para preprocesar la fuente, como m4.

Además, el # en la lista de reemplazo (al comienzo de #define FIDN... se analizaría como el operador # (stringize): el operando de este operador debe ser un parámetro de macro con nombre, que define no lo es).

No, al definir macros, debe hacerse cargo de una cosa que la macro no debería llamarse a sí misma (reccursivamente) ni directa ni indirectamente.

Sé que dos variables estáticas que consumen 8 bytes serán expansivas para u.

Tengo solución sobre eso

 #define FID_STRS2(x) #x #define FID_STRE(x) FID_STRS2(x) #define FID_DECL(n, v) static int FIDN_##n = v;static const char *FIDS_##n = FID_STRE(v) 

Solo renombralos yendo reccursivos