Maison >développement back-end >C++ >Comment puis-je concaténer des chaînes définies par macro en C/C sans l'opérateur ?

Comment puis-je concaténer des chaînes définies par macro en C/C sans l'opérateur ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-07 06:32:18672parcourir

How Can I Concatenate Macro-Defined Strings in C/C   Without the  Operator?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn