Compartir a través de


Visualización de expansiones de macros de C/C++

Las macros largas puede ser difíciles de leer. Visual Studio ahora puede expandir macros de C y C++. Puede obtener una copia en el portapapeles del aspecto de la macro expandida, reemplazar la macro en línea por su expansión y expandir paso a paso una macro para ver cada fase de expansión. En este artículo, experimentará con todas estas características.

Requisitos previos

  • Versión 17.5 o posteriores de Visual Studio

Crear la muestra

  1. Inicie Visual Studio 2022, versión 17.5 o posterior, y cree una aplicación de consola de C++.

  2. Reemplace el código predeterminado por:

    #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;
    }
    

Copia de una macro expandida

Puede inspeccionar el valor expandido de una macro, incluso con varios pasos del preprocesador, mediante los pasos siguientes:

  1. Coloque el cursor en la POWER macro dentro main() del ejemplo.

  2. Al mantener el puntero sobre la macro, aparecen las opciones copiar, expandir en línea, visualizar la expansión y buscar en línea:

    Captura de pantalla de la ventana de macros, en la que se muestra la expansión de la macro POWER.

    La ventana de macros está abierta en POWER para mostrar que se expande para (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0). Las opciones para copiar, expandir en línea, expansión visual y buscar en línea aparecen en la parte inferior de la ventana.

  3. Elija Copiar.

  4. Cree un comentario después de la línea POWER y elija pegar (CTRL+V). La expansión de la macro, como comentario junto al macro, tiene el siguiente aspecto: // (((10.0 * 20.0)* (5.0 * 2.0)) / 2.0). El método abreviado de teclado de esta acción es CTRL+M, CTRL+C.

Expandir una macro insertada

Siga estos pasos para expandir una macro insertada, que reemplaza la macro con su expansión:

  1. Coloque el cursor en la POWER macro dentro main() del ejemplo.
  2. Al mantener el puntero sobre la macro, aparecen las opciones copiar, expandir en línea, visualizar la expansión y buscar en línea
  3. Elija Expandir alineado. La macro POWER() se reemplaza por su valor expandido: std::cout << "Power: " << (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) << std::endl;. La combinación de teclas de esta acción es CTRL+M, CTRL+I.

Visualización de expansión de macro

Puede expandir una macro un paso a la vez. Esto resulta útil cuando hay macros anidadas y desea ver la expansión paso a paso. Para visualizar la expansión de macros de la macro WORK, siga estos pasos:

  1. Coloque el cursor en la macro WORK dentro de main() del ejemplo.

  2. Al mantener el puntero sobre la macro, aparecen las opciones copiar, expandir en línea, visualizar la expansión y buscar en línea.

  3. Elija Visualizar expansión. La combinación de teclas de esta acción es CTRL+M seguido de CTRL+V.

  4. Aparece la ventana de expansión de macros. La primera expansión de la macro WORK es visible: (FORCE() * DISTANCE()):

    Captura de pantalla de la ventana de expansión de macros, que permite recorrer paso a paso la expansión del macro WORK un paso a la vez.

    La ventana de visualización de macros está abierta en FORCE para mostrar que se expande inicialmente a (FORCE()*DISTANCE()). Hay corchetes angulares únicos en la ventana para avanzar y retroceder una sola expansión a la vez. Los corchetes angulares dobles expanden o deshacen completamente la expansión de macros.

  5. Haga clic en el corchete angular derecho para expandir la macro FORCE. La ventana muestra ahora la expansión del macro FORCE: (MASS * ACCELERATION) * DISTANCE().

  6. Haga clic en el corchete angular derecho para expandir otro paso. La ventana muestra ahora la expansión del macro FORCE: ((10.0 * ACCELERATION) * DISTANCE()).

Continúe expandiendo la macro para ver la expansión completa de la macro WORK, que es: ((10.0 * 20.0) * (5.0 * 2.0)). Puede usar los corchetes angulares dobles para expandir completamente la macro o invertir la expansión al primer nivel de expansión.

Consulte también

Ver macros de UE en Visual Studio