Come definire una definizione in C?

È ansible scrivere un #define che definisce un #define ?

Per esempio:

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

Ma invece:

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

FID_DECL funziona bene ma crea due variabili statiche. È ansible far funzionare FID_DECL2 e definire due definizioni?

No; la preelaborazione viene eseguita in un’unica passata. Se vuoi o hai bisogno di un comportamento più avanzato, considera l’utilizzo di un altro strumento per preelaborare il codice sorgente, come m4.

Inoltre, il # nell’elenco di sostituzione (all’inizio di #define FIDN... verrà analizzato come l’operatore # (stringize): l’operando di questo operatore deve essere un parametro macro denominato, che non lo define .

No mentre definisci le macro dovresti occuparti di una cosa che la macro non dovrebbe chiamare da solo (in modo ricorsivo) direttamente o indirettamente.

So che due variabili statiche che consumano 8 byte saranno espansive per te.

Ho una soluzione su di esso

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

Basta rinominarli andando ricorsivi