Dans une clause #define, comment faire en sorte que le préprocesseur remplace un paramètre dans un nom de variable?

J’ai le code suivant:

#define MY_MACRO(PARAM) int PARAM_int; double PARAM_double; [subsequent instructions] 

Malheureusement, cela ne fonctionne pas, ce qui signifie que PARAM n’est pas remplacé dans les noms de variables. Est-ce que ce problème est résolu?

PARAM_int est considéré comme un simple jeton, distinct de PARAM . Vous pouvez concaténer des jetons dans une définition de macro avec ## :

 #define MY_MACRO(PARAM) int PARAM ## _int; double PARAM ## _double; 

Maintenant, PARAM étendra à tout ce que vous appelez la macro, puis le jeton résultant sera collé avec _int et _double .