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
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)
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
Cette macro se développe à :
#define STR3 "s" "1"
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!