C Concaténation du préprocesseur avec la variable

Dupliquer possible:
Préprocesseur et concaténation

Est-il possible de concaténer un pré-processeur C avec un nom de variable?

#define WIDTH 32 int dataWIDTH; // dataWIDTH should be interpreted as 'data32' printf("%d",dataWIDTH); 

Votre cas d’utilisation nécessite une double déconnexion; L’utilisation de l’opérateur de collage de jeton (##) seul appenda simplement le nom de la directive de préprocesseur.

 #define WIDTH 32 #define _MAKEDATA(n) data##n #define MAKEDATA(n) _MAKEDATA(n) int MAKEDATA(WIDTH) = 7; int _MAKEDATA(WIDTH) = 8; int main(int argc, char *argv[]) { printf("%d\n", data32); return 0; } 

les rendements

 $ gcc -E foo.c int data32 = 7; int dataWIDTH = 8; int main(int argc, char *argv[]) { printf("%d\n", data32); return 0; } 

Il y a un opérateur de collage de jetons appelé ##, lisez-le par exemple ici:

http://msdn.microsoft.com/en-us/library/09dwwt6y(v=vs.80).aspx