Concaténation de chaînes basée sur des macros en C/C
La concaténation directe de chaînes définies par macro en C/C n'est pas possible en utilisant le ## opérateur de préprocesseur, principalement destiné à la concaténation de jetons. Cependant, une solution de contournement existe pour y parvenir.
Considérons l'exemple suivant :
#define STR1 "s" #define STR2 "1" #define STR3 STR1 STR2
Ce code définit trois macros : STR1 avec la chaîne littérale "s", STR2 avec "1", et STR3 comme concaténation de STR1 et STR2. L'expansion de STR3 aboutit à :
#define STR3 "s" "1"
Cependant, en langage C, la juxtaposition de deux chaînes séparées par des espaces (comme dans "s" "1") équivaut à une seule chaîne "s1" .
Par conséquent, le code suivant concatène directement STR1 et STR2 sans avoir besoin de l'opérateur ## :
#define STR3 STR1 STR2
Ceci s'étend à :
#define STR3 "s1"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!