Wie in vielen meiner vorherigen Fragen erwähnt, arbeite ich über K & R und bin derzeit im Präprozessor. Eines der interessanteren Dinge - etwas, das ich bei keinem meiner früheren Versuche, C zu lernen, zuvor gekannt habe - ist der ##Präprozessor-Operator. Laut K & R:
Der Präprozessoroperator
##bietet eine Möglichkeit, tatsächliche Argumente während der Makroerweiterung zu verketten. Wenn ein Parameter im Ersetzungstext neben a steht##, wird der Parameter durch das eigentliche Argument ersetzt, der##und der umgebende Leerraum werden entfernt und das Ergebnis wird erneut gescannt. Das Makropasteverkettet beispielsweise seine beiden Argumente:
#define paste(front, back) front ## backSo
paste(name, 1)entsteht das Tokenname1.
Wie und warum sollte jemand dies in der realen Welt verwenden? Was sind praktische Beispiele für seine Verwendung und gibt es Fallstricke zu berücksichtigen?
std::wstring BuildDate = WIDEN(__DATE__) L" " WIDEN(__TIME__);die gesamte Zeichenfolge reduzieren und implizit auf einmal erstellen.