@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 :-)