Comment définir une définition en C?

Est-il possible d’écrire une #define qui définit une #define ?

Par exemple:

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

Mais plutôt:

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

FID_DECL fonctionne bien mais crée deux variables statiques. Est-il possible de faire fonctionner FID_DECL2 et de définir deux définit?

Non; le prétraitement est effectué en un seul passage. Si vous souhaitez ou avez besoin d’un comportement plus avancé, envisagez d’utiliser un autre outil pour prétraiter le code source, tel que m4.

De plus, le # de la liste de remplacement (au début de #define FIDN... sera analysé comme un opérateur # (ssortingngize): l’opérande de cet opérateur doit être un paramètre de macro nommé, ce qui define n’est pas.

Non, tout en définissant les macros, vous devez vous occuper d’une chose que la macro ne doit pas s’appeler (de manière récurrente), ni directement ni indirectement.

Je sais que deux variables statiques consommant 8 octets seront expansives pour vous.

J’ai la solution dessus

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

Il suffit de les renommer va reccursive