Condividi tramite


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

  1. Avviare Visual Studio 2022, versione 17.5 o successiva e creare un'app console C++.

  2. 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:

  1. Posizionare il cursore sulla POWER macro all'interno main() dell'esempio.

  2. Quando si passa il puntatore del mouse sulla macro, le opzioni vengono visualizzate in Copia, Espandi inline, Visualizza espansione e Cerca online:

    Screenshot of the macro window, showing the POWER macro expansion.

    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.

  3. Scegliere Copia.

  4. 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:

  1. Posizionare il cursore sulla POWER macro all'interno main() dell'esempio.
  2. Quando si passa il puntatore del mouse sulla macro, vengono visualizzate le opzioni Copia, Espandi inline, Visualizza espansione e Cerca online
  3. 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:

  1. Posizionare il cursore sulla WORK macro all'interno main() dell'esempio.

  2. Quando si passa il puntatore del mouse sulla macro, le opzioni vengono visualizzate in Copia, Espandi inline, Visualizza espansione e Cerca online.

  3. Scegliere Visualizza espansione. Il tasto di scelta rapida per questa azione è CTRL+M seguito da CTRL+V.

  4. Verrà visualizzata la finestra di espansione della macro. La prima espansione della WORK macro è visibile: : (FORCE() * DISTANCE())

    Screenshot of the macro expansion window, which allows you to step through the WORK macro expansion one step at a time.

    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.

  5. Fare clic sulla parentesi uncinata destra per espandere la FORCE macro. La finestra mostra ora l'espansione della FORCE macro: (MASS * ACCELERATION) * DISTANCE().

  6. 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.

Vedi anche

Visualizzare macro UE in Visual Studio