logo

Opérateurs # et ## en C

Opérateur de stringisation (#)

Le opérateur de chaîne (#) est un opérateur de préprocesseur qui fait en sorte que l'argument réel correspondant soit entouré guillemets doubles. L'opérateur #, généralement appelé corder opérateur, transforme l’argument qu’il précède en un chaîne entre guillemets . Il est également connu sous le nom d’opérateur de stringification.

Il est généralement utilisé avec les macros en C.



dîner contre dîner

Exemple

Le code C suivant illustre l'utilisation de l'opérateur Stringizing (#).

C








>

>

10 ml en onces
Sortir

geeksforgeeks>

Explication

Le préprocesseur suivant transforme la ligne printf(mkstr(geeksforgeeks)); dans printf(geeksforgeeks);

Opérateur de collage de jetons (##)

Le Opérateur de collage de jetons (##) permet aux jetons utilisés comme arguments réels d'être concaténés pour former d'autres jetons. Il est souvent utile de fusionner deux jetons en un seul lors du développement des macros. C'est ce qu'on appelle le collage de jetons ou la concaténation de jetons.

L'opérateur de prétraitement '##' effectue le collage du jeton. Lorsqu'une macro est développée, les deux jetons de chaque côté de chaque opérateur « ## » sont combinés en un seul jeton, qui remplace ensuite le « ## » et les deux jetons d'origine dans l'expansion de la macro.

Exemples

Le code C suivant illustre l’utilisation de l’opérateur de collage de jetons (##).

qu'est-ce qu'une interface

C




// C program to illustrate (##) operator> #include> > // Macro definition using the Token-pasting operator> #define concat(a, b) a##b> int> main(>void>)> {> >int> xy = 30;> > >// Printing the concatenated value of x and y> >printf>(>'%d'>, concat(x, y));> >return> 0;> }>

>

>

Sortir

30>

Explication

10 millions

Le préprocesseur transforme printf(%d, concat(x, y)); dans printf(%d, xy);

Application de l'opérateur de collage de jetons (##)

Le ## fournit un moyen de concaténer les arguments réels lors du développement d'une macro. Si un paramètre dans le texte de remplacement est adjacent à un ##, le paramètre est remplacé par l'argument réel, le ## et l'espace blanc environnant sont supprimés et le résultat est réanalysé.