logo

Operatory # i ## w C

Operator naciągania (#)

The operator rozciągania (#) jest operatorem preprocesora, który powoduje umieszczenie odpowiedniego argumentu rzeczywistego podwójne cudzysłowy. Operator #, który jest ogólnie nazywany sznurować operator, zamienia poprzedzający go argument na a cytowany ciąg . Nazywa się go również operatorem stringyfikacji.

Jest powszechnie używany z makrami w języku C.

oddzielny ciąg w Javie

Przykład

Poniższy kod C demonstruje użycie operatora Stringizing (#).



C




>

>

szybkie sortowanie
Wyjście

geeksforgeeks>

Wyjaśnienie

Poniższy preprocesor zamienia linię printf(mkstr(geeksforgeeks)); do printf(geeksforgeeks);

Operator wklejania tokenu (##)

The Operator wklejania tokenu (##) umożliwia łączenie tokenów używanych jako rzeczywiste argumenty w celu utworzenia innych tokenów. Często przydatne jest połączenie dwóch tokenów w jeden podczas rozwijania makr. Nazywa się to wklejaniem tokenów lub łączeniem tokenów.

Operator przetwarzania wstępnego „##” wykonuje wklejanie tokenów. Kiedy makro jest rozwinięte, dwa żetony po obu stronach każdego operatora „##” są łączone w jeden token, który następnie zastępuje „##” i dwa oryginalne żetony w rozwinięciu makra.

Przykłady

Poniższy kod C demonstruje użycie operatora wklejania tokenu (##).

odlany w sql

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;> }>

>

>

Wyjście

30>

Wyjaśnienie

lista połączona w Javie

Preprocesor przekształca printf(%d, concat(x, y)); do printf(%d, xy);

Zastosowanie operatora wklejania tokenu (##)

## umożliwia łączenie rzeczywistych argumentów podczas rozwijania makr. Jeśli parametr w tekście zastępczym sąsiaduje z ##, parametr jest zastępowany rzeczywistym argumentem, ## i otaczający go biały znak są usuwane, a wynik jest ponownie skanowany.