Ich habe viele Variablen, die dieselben Namen haben wie Elemente in einem technischen Dokument, daher ist auch die String-Version des Namens nützlich.
Ich benutze ein solches Makro sehr oft:
%Vor%Typische Verwendung ist:
%Vor%Meine Frage ist dreifach:
Bearbeiten Ich hätte sagen sollen, dass das obige ein minimales Beispiel ist. Die Funktion könnte andere Parameter haben und die benannte Entität könnte ein Datenelement oder vielleicht sogar eine Funktion selbst sein.
Eine weitere Erweiterung, die ich für C ++ in Erwägung ziehe, ist eine Klasse NamedRef
, die den Inhalt des Makros erhalten könnte.
Sie könnten einen Schritt weiter gehen:
%Vor% Dies ist jedoch nur sinnvoll, wenn Sie dieselbe Funktion mehrfach aufrufen. Ansonsten glaube ich nicht, dass es einen besseren Weg als dein Beispiel gibt. Natürlich sollten Sie den Namen des Makros in etwas aussagekräftigeres ändern, wie zum Beispiel ARGUMENTS
oder etwas.
Das if (1) stuffs schließt das Makro so ein, dass es (normalerweise) nicht mit Schleifen, Zweigen, if-Anweisungen usw. durcheinander gebracht wird.
Sie würden dann Ihre Funktion wie folgt aufrufen:
%Vor%Sie fügen für jede "Funktionsdeklaration" nur eine zusätzliche Zeile hinzu. Wenn der C-Präprozessor mehrere Schritte zulässt, können Sie alles in einen zusammenfassen, aber leider nicht.
Ich habe vergessen, weil ich hoffe, dass Sie Ihre Funktion schreiben müssen:
%Vor%Jedenfalls sollte es viel einfacher und hübscher sein, so zu lesen.
Wie Jesse antwortete,
Sie können so schreiben:
%Vor%Wenn Sie mehr Argumente übergeben müssen, können Sie MACRO2 verwenden, das variable Argumente verwendet. Sie müssen den Funktionsnamen entsprechend übergeben.
Tags und Links c++ c-preprocessor stringification