5.4. Manipulation de chaînes de caractères dans les macros

Le préprocesseur permet d'effectuer des opérations sur les chaînes de caractères. Tout argument de macro peut être transformé en chaîne de caractères dans la définition de la macro s'il est précédé du signe #. Par exemple, la macro suivante :

#define CHAINE(s) #s

transforme son argument en chaîne de caractères. Par exemple :

CHAINE(2+3)

devient :
"2+3"

Lors de la transformation de l'argument, toute occurrence des caractères " et \ est transformée respectivement en \" et \\ pour conserver ces caractères dans la chaîne de caractères de remplacement.

Le préprocesseur permet également la concaténation de texte grâce à l'opérateur ##. Les arguments de la macro qui sont séparés par cet opérateur sont concaténés (sans être transformés en chaînes de caractères cependant). Par exemple, la macro suivante :

#define NOMBRE(chiffre1,chiffre2) chiffre1##chiffre2

permet de construire un nombre à deux chiffres :

NOMBRE(2,3)

est remplacé par le nombre décimal 23. Le résultat de la concaténation est ensuite analysé pour d'éventuels remplacements additionnels par le préprocesseur.