Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
POWERmacro 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
POWERriga e scegliere Incolla (CTRL+V). L'espansione della macro, come commento vicino alla tua macro, è simile a:// (((10.0 * 20.0)* (5.0 * 2.0)) / 2.0). Il tasto di scelta rapida 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
POWERmacro 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
WORKmacro 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
WORKmacro è 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
FORCEmacro. La finestra mostra ora l'espansione dellaFORCEmacro:(MASS * ACCELERATION) * DISTANCE().Fare clic sulla parentesi angolare destra per espandere un altro passaggio. La finestra mostra ora l'espansione della
FORCEmacro:((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.