Forum: PC-Programmierung Visual C++ makro


von VCbasic (Gast)


Lesenswert?

Ich würde gerne in Microsoft Visuals C++ ein Makro schreiben welche mir 
ein #if xxx sucht bis zum dazugehörigen #else und #end geht und den Code 
dazwischen löscht. Für mehrere Dateien.

Wo gibt es ein Tut oder wer hat eine Idee+

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Heisse Kiste, wenn im #if ... #endif Abschnitt noch andere ähnliche 
Klammern stehen. Leichter wäre es, wenn das #endif spezifischer ist wie 
z-.b. nei #endif /* MAKRONAME */

von Rolf Magnus (Gast)


Lesenswert?

Einen C-Präprozessor nehmen. Der macht genau das, wenn xxx nicht 
definiert ist.

von yalu (Gast)


Lesenswert?

@Rolf:
> Einen C-Präprozessor nehmen. Der macht genau das, wenn xxx nicht
> definiert ist.

Der macht aber leider noch einiges mehr, z.B. C-Makros expandieren,
Headerfiles includen usw. Der OP möchte mit seinem Vorhaben vermutlich
den Quelltext verkleinern, nicht aufblasen ;-)

@VCbasic:
Um so etwas selbst zu programmieren, wäre es von Vorteil, wenn der
Editor wenigstens ein paar Grundfunktionen, wie das Springen von einem
#if zum zugehörigen #else und #endif zur Verfügung stellen würde, aus
denen man etwas zusammenbauen kann. Viele Stand-Alone-Editoren können
das schon lange.

<schleichwerbung_fuer_vim>
  Mit Vim, dem besten aller Editoren ;-), geht das ohne großen
  Aufwand:
1
  /^\s*#\s*if\s\+xxx\>^Md2]#
  Das Komplizierteste daran ist die Suche nach dem "#if xxx", wenn man
  Leerzeichen und Tabulatoren an allen erlaubten Stellen
  berücksichtigt. Der eigentliche Löschbefehl ist einfach d2]#, er
  löscht alles von der aktuellen Zeile (der mit dem #if) bis zum
  zugehörigen #endif.

  Das Ganze kann man noch in ein Register packen und wiederholt
  ausführen, bis die ganze Datei von den "#if xxx"-Konstrukten
  gesäubert ist. Auch eine Iteration über mehrere Dateien ist nicht
  schwierig.
</schleichwerbung_fuer_vim>

Aber zurück zu deiner Fragestellung:

Ich kenne das aktuelle Visual Studio nicht. In der letzten Version,
mit der ich gearbeitet habe (VC6) war der Editor noch ein besseres
Notepad und damit nicht für komplexere Such- und Änderungsaufgaben zu
gebrauchen. D.h. du müsstest das Matchen von verschachtelten #ifs
selbst programmieren. Aber vielleicht kann das aktuelle Visual Studio
inzwischen mehr.

Wie man überhaupt Makros und ähnliches für Visual Studio schreibt,
steht hier:

  http://msdn2.microsoft.com/en-us/library/xc52cke4(VS.80).aspx

Kannst ja, wenn das Makro läuft, dieses hier posten. Mich würde
interessieren, wie so etwas aussieht, und andere können etwas dabei
lernen :-)

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Habe gerade auf freshmeat gesehen, was vielleicht helfen kann, die 
Sourcen aufzuräumen: "Son of Unifdef" http://www.sunifdef.strudl.org/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.