Visualisieren der C/C++-Makroerweiterung
Lange Makros können schwer zu lesen sein. Visual Studio kann jetzt C- und C++-Makros erweitern. Sie können eine Kopie der Darstellung des erweiterten Makros in der Zwischenablage abrufen, das Makro inline durch seine Erweiterung ersetzen und ein Makro schrittweise erweitern, um zu sehen, wie es in jeder Erweiterungsphase aussieht. In diesem Artikel experimentieren Sie mit all diesen Features.
Voraussetzungen
- Visual Studio, Version 17.5 oder höher
Erstellen des Beispiels
Starten Sie Visual Studio 2022, Version 17.5 oder höher, und erstellen Sie eine C++-Konsolen-App.
Ersetzen Sie den Standardcode durch:
#include <iostream> #define MASS 10.0 #define ACCELERATION 20.0 #define SPEED 5.0 #define TIME 2.0 #define DISTANCE() (SPEED * TIME) #define FORCE()(MASS * ACCELERATION) #define WORK()(FORCE() * DISTANCE()) #define POWER()(WORK()/TIME) int main() { std::cout << "Distance: " << DISTANCE() << std::endl; std::cout << "Force: " << FORCE() << std::endl; std::cout << "Work: " << WORK() << std::endl; std::cout << "Power: " << POWER() << std::endl; }
Kopieren eines erweiterten Makros
Sie können den erweiterten Wert eines Makros prüfen, auch wenn mehrere Präprozessorschritte beteiligt sind, indem Sie die folgenden Schritte ausführen:
Platzieren Sie den Cursor im Beispiel auf
main()
dasPOWER
Makro.Während Sie mit dem Mauszeiger auf das Makro zeigen, werden Optionen angezeigt, um "Kopieren", "Inline erweitern", "Erweiterung visualisieren" und "Online suchen" anzuzeigen:
Das Makrofenster ist in POWER geöffnet, um anzuzeigen, dass es auf (((10,0 * 20,0) * (5,0 * 2,0)) / 2,0 erweitert wird. Optionen zum Kopieren, Erweitern von Inline, visueller Erweiterung und Onlinesuche werden unten im Fenster angezeigt.
Wählen Sie "Kopieren" aus.
Erstellen Sie einen Kommentar nach der
POWER
Zeile, und wählen Sie "Einfügen" (STRG+V) aus. Die Erweiterung des Makros als Kommentar in der Nähe des Makros sieht wie folgt aus:// (((10.0 * 20.0)* (5.0 * 2.0)) / 2.0).
Die Tastenkombination für diese Aktion lautet STRG+M, STRG+C.
Erweitern eines Makros inline
Führen Sie die folgenden Schritte aus, um ein Makro inline zu erweitern, das das Makro durch seine Erweiterung ersetzt:
- Platzieren Sie den Cursor im Beispiel auf
main()
dasPOWER
Makro. - Wenn Sie mit dem Mauszeiger auf das Makro zeigen, werden Optionen angezeigt, um "Kopieren", "Inline erweitern", "Erweiterung visualisieren" und "Online suchen" anzuzeigen.
- Wählen Sie "Inline erweitern" aus. Das
POWER()
Makro wird durch seinen erweiterten Wert ersetzt:std::cout << "Power: " << (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) << std::endl;
. Die Tastenkombination für diese Aktion ist STRG+M, STRG+I.
Visualisieren der Makroerweiterung
Sie können ein Makro jeweils um einen Schritt erweitern. Dies ist nützlich, wenn geschachtelte Makros vorhanden sind und Sie die Erweiterung schrittweise anzeigen möchten. Führen Sie die folgenden Schritte aus, um die Makroerweiterung für das WORK
Makro zu visualisieren:
Platzieren Sie den Cursor im Beispiel auf
main()
dasWORK
Makro.Während Sie mit dem Mauszeiger auf das Makro zeigen, werden Optionen angezeigt, um "Kopieren", "Inline erweitern", "Erweiterung visualisieren" und "Online suchen" anzuzeigen.
Wählen Sie "Erweiterung visualisieren" aus. Die Tastenkombination für diese Aktion ist STRG+M gefolgt von STRG+V.
Das Makroerweiterungsfenster wird angezeigt. Die erste Erweiterung des
WORK
Makros ist sichtbar: :(FORCE() * DISTANCE())
Das Makrovisualisierungsfenster ist in FORCE geöffnet, um anzuzeigen, dass es zunächst auf (FORCE()*DISTANCE())) erweitert wird. Es gibt einzelne winkelige Klammern im Fenster, um jeweils eine einzelne Erweiterung vorwärts und rückwärts zu bewegen. Die doppeltwinkligen Klammern erweitern oder vollständig rückgängigmachen die Makroerweiterung.
Klicken Sie auf die rechte eckige Klammer, um das
FORCE
Makro zu erweitern. Das Fenster zeigt nun dieFORCE
Makroerweiterung:(MASS * ACCELERATION) * DISTANCE()
.Klicken Sie auf die rechte eckige Klammer, um einen weiteren Schritt zu erweitern. Das Fenster zeigt nun die
FORCE
Makroerweiterung:((10.0 * ACCELERATION) * DISTANCE())
.
Erweitern Sie das Makro weiter, um die vollständige Erweiterung des WORK
Makros anzuzeigen. Dies ist: ((10.0 * 20.0) * (5.0 * 2.0))
Sie können die doppeltwinkligen Klammern verwenden, um das Makro vollständig zu erweitern oder die Erweiterung auf die erste Erweiterungsebene umzukehren.