C / C ++ - Makro, das in Argument, Argument als String expandiert

8

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:

  • Gibt es einen besseren Weg, dies zu tun?
  • Ist ein ähnliches Makro in Boost oder anderen Bibliotheken verfügbar?
  • Wenn nicht, wie könnte ich das verfeinern und umbenennen, um es klar und nützlich zu machen?

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.

%Vor%     
paperjam 21.12.2011, 23:13
quelle

4 Antworten

5

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.

    
Jesse Good 21.12.2011 23:33
quelle
0

Sie werden wahrscheinlich feststellen, dass XMACRO für diese Art von Arbeit nützlich ist.

    
EvilTeach 22.12.2011 00:12
quelle
0
%Vor%

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.

    
std''OrgnlDave 22.12.2011 00:06
quelle
0

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.

    
Murali Krishna 22.12.2011 09:18
quelle