Compartir a través de


Visualización de la expansión de macros de C/C++

Las macros largas pueden 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 lo que parece en cada fase de expansión. En este artículo, experimentará con todas estas características.

Requisitos previos

  • Visual Studio, versión 17.5 o posterior

Creación del ejemplo

  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 cuando intervienen 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, las opciones aparecen copiar, expandir en línea, visualizar la expansión y buscar en línea:

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

    La ventana de macros está abierta en POWER para mostrar que se expande a ((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 POWER línea y elija pegar (CTRL+V). La expansión de la macro, como comentario cerca de la 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 por su expansión:

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

Visualización de la expansión de macros

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 WORK macro, siga estos pasos:

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

  2. Al mantener el puntero sobre la macro, las opciones aparecen como Copiar, Expandir en línea, Visualizar expansión y Buscar en línea.

  3. Elija Visualizar expansión. El método abreviado de teclado 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 WORK macro es visible: : (FORCE() * DISTANCE())

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

    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 se expanden completamente o deshacen completamente la expansión de macros.

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

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

Continúe expandiendo la macro para ver la expansión completa de la WORK macro, 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