Visualizzare l'espansione di macro C/C++
Le macro lunghe possono essere difficili da leggere. Visual Studio ora può espandere macro C e C++. È possibile ottenere una copia negli Appunti dell'aspetto della macro espansa, sostituire la macro inline con la relativa espansione e espandere una macro per visualizzare l'aspetto di ogni fase di espansione. In questo articolo si sperimentano tutte queste funzionalità.
Prerequisiti
- Visual Studio versione 17.5 o successiva
Creare l'esempio
Avviare Visual Studio 2022, versione 17.5 o successiva e creare un'app console C++.
Sostituire il codice predefinito con:
#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; }
Copiare una macro espansa
È possibile esaminare il valore espanso di una macro, anche quando sono coinvolti diversi passaggi del preprocessore, attenendosi alla procedura seguente:
Posizionare il cursore sulla
POWER
macro all'internomain()
dell'esempio.Quando si passa il puntatore del mouse sulla macro, le opzioni vengono visualizzate in Copia, Espandi inline, Visualizza espansione e Cerca online:
La finestra macro è aperta in POWER per indicare che si espande a (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0). Le opzioni per copiare, espandere inline, espansione visiva e cercare online vengono visualizzate nella parte inferiore della finestra.
Scegliere Copia.
Creare un commento dopo la
POWER
riga e scegliere Incolla (CTRL+V). L'espansione della macro, come commento vicino alla macro, è simile alla seguente:// (((10.0 * 20.0)* (5.0 * 2.0)) / 2.0).
la scelta rapida da tastiera per questa azione è CTRL+M, CTRL+C.
Espandere una macro inline
Utilizzare la procedura seguente per espandere una macro inline, che sostituisce la macro con la relativa espansione:
- Posizionare il cursore sulla
POWER
macro all'internomain()
dell'esempio. - Quando si passa il puntatore del mouse sulla macro, vengono visualizzate le opzioni Copia, Espandi inline, Visualizza espansione e Cerca online
- Scegliere Espandi inline. La
POWER()
macro viene sostituita con il relativo valore espanso:std::cout << "Power: " << (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) << std::endl;
. La scelta rapida da tastiera per questa azione è CTRL+M, CTRL+I.
Visualizzare l'espansione di macro
È possibile espandere una macro un passaggio alla volta. Ciò è utile quando sono presenti macro annidate e si vuole visualizzare la procedura dettagliata di espansione. Per visualizzare l'espansione di macro per la WORK
macro, seguire questa procedura:
Posizionare il cursore sulla
WORK
macro all'internomain()
dell'esempio.Quando si passa il puntatore del mouse sulla macro, le opzioni vengono visualizzate in Copia, Espandi inline, Visualizza espansione e Cerca online.
Scegliere Visualizza espansione. Il tasto di scelta rapida per questa azione è CTRL+M seguito da CTRL+V.
Verrà visualizzata la finestra di espansione della macro. La prima espansione della
WORK
macro è visibile: :(FORCE() * DISTANCE())
La finestra di visualizzazione macro è aperta su FORCE per indicare che inizialmente si espande a (FORCE()*DISTANCE()). Nella finestra sono presenti singole parentesi angolari per spostarsi in avanti e indietro una singola espansione alla volta. Le parentesi angolari doppie espandono completamente o annullano completamente l'espansione della macro.
Fare clic sulla parentesi uncinata destra per espandere la
FORCE
macro. La finestra mostra ora l'espansione dellaFORCE
macro:(MASS * ACCELERATION) * DISTANCE()
.Fare clic sulla parentesi angolare destra per espandere un altro passaggio. La finestra mostra ora l'espansione della
FORCE
macro:((10.0 * ACCELERATION) * DISTANCE())
.
Continuare ad espandere la macro per visualizzare l'espansione completa della WORK
macro, ovvero . ((10.0 * 20.0) * (5.0 * 2.0))
È possibile utilizzare le parentesi angolari doppie per espandere completamente la macro oppure per invertire l'espansione al primo livello di espansione.