Concaténation de chaînes avec des macros C/C
En C et C, les macros constituent un moyen pratique de définir des constantes et d'effectuer des substitutions de texte pendant la pré-production. -traitement. Supposons que vous ayez deux macros, STR1 et STR2, définies comme suit :
#define STR1 "s" #define STR2 "1"
Vous souhaitez concaténer STR1 et STR2 pour obtenir "s1". Existe-t-il un moyen simple de le faire avec une seule macro qui produit la chaîne souhaitée ?
Une approche directe
Contrairement aux jetons dans le code, les macros sont traitées par le préprocesseur avant la compilation. Par conséquent, vous ne pouvez pas utiliser des opérateurs comme « » pour concaténer des chaînes directement avec des macros. Cependant, en fonction de la syntaxe spécifique, il peut être possible d'y parvenir.
Dans ce cas, C vous permet de concaténer des littéraux de chaîne séparés par des espaces lors du développement de la macro. En modifiant la définition STR3 comme suit, vous pouvez obtenir le résultat souhaité :
#define STR3 STR1 STR2
Cela s'étend à :
#define STR3 "s" "1"
En C, séparer deux chaînes par des espaces équivaut à créer un une seule chaîne. Par conséquent, STR3 se développe jusqu'à la chaîne "s1".
Approches alternatives
Si l'approche directe ne fonctionne pas dans votre scénario, des méthodes alternatives incluent l'utilisation de conditions de préprocesseur ou la transmission arguments à une macro parent qui effectue la concaténation. Ces approches peuvent être plus complexes mais offrent plus de flexibilité dans différentes situations.
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!