Maison > développement back-end > C++ > Les macros C/C peuvent-elles concaténer des chaînes directement sans fonctions d'assistance ?

Les macros C/C peuvent-elles concaténer des chaînes directement sans fonctions d'assistance ?

Susan Sarandon
Libérer: 2024-12-24 16:32:11
original
657 Les gens l'ont consulté

Can C/C   Macros Concatenate Strings Directly Without Helper Functions?

Concaténation de macros en C/C : une approche alternative

Quand il s'agit de concaténation de chaînes avec des macros en C/C, la plupart des développeurs instinctivement recourir à passer des arguments à une fonction macro dédiée. Cependant, existe-t-il un moyen plus direct d'accomplir cette tâche ?

Considérons l'exemple suivant :

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

Le but ici est de concaténer STR1 et STR2 pour former "s1". En utilisant la méthode traditionnelle, on pourrait procéder comme suit :

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

Mais existe-t-il un moyen d'y parvenir sans la fonction supplémentaire ?

Concaténation directe de chaînes de macros

Pour les chaînes en C/C , il existe effectivement une solution simple :

#define STR3 STR1 STR2
Copier après la connexion

Cette macro se développe à :

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

En C, séparer les chaînes par des espaces comme dans "s" "1" équivaut à une seule chaîne, "s1."

Conclusion

Bien que la méthode traditionnelle avec une fonction macro supplémentaire soit polyvalente et puisse gérer des cas plus complexes, l'approche directe décrite ici fournit un moyen pratique et efficace de concaténer des chaînes lors de l'utilisation extension macro.

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