Maison > développement back-end > C++ > Comment puis-je concaténer directement des littéraux de chaîne dans des macros C/C ?

Comment puis-je concaténer directement des littéraux de chaîne dans des macros C/C ?

Patricia Arquette
Libérer: 2024-12-20 14:50:16
original
940 Les gens l'ont consulté

How Can I Directly Concatenate String Literals in C/C   Macros?

Concaténation de chaînes dans les macros C/C

Lors de la définition de macros avec des chaînes littérales, il est souvent nécessaire de les concaténer pour former une nouvelle chaîne. Prenons un exemple :

#define STR1      "s"
#define STR2      "1"
#define STR3      STR1 ## STR2
Copier après la connexion

La question se pose : est-il possible de concaténer directement STR1 et STR2 pour obtenir "s1" en utilisant une seule définition de macro ?

Concaténation de chaînes standard

Traditionnellement, la concaténation de chaînes dans les macros est réalisée en utilisant l'opérateur de stringification (#). Cependant, cette approche implique de passer des arguments à une fonction macro intermédiaire.

#define CONCAT(x, y) x ## y
#define STR3 CONCAT(STR1, STR2)
Copier après la connexion

Concaténation simplifiée des chaînes

Pour le cas spécifique de la concaténation de littéraux de chaîne, une approche simplifiée existe. En omettant l'opérateur de stringification, nous pouvons directement concaténer les chaînes :

#define STR3 STR1 STR2
Copier après la connexion

Cela se développe en :

#define STR3 "s" "1"
Copier après la connexion

En langage C, juxtaposer des chaînes avec des espaces (comme dans "s" "1") équivaut à avoir une seule chaîne "s1". Par conséquent, cette méthode simplifiée fournit un moyen direct de concaténer des littéraux de chaîne dans les macros C/C.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal