Compartir a través de


Visualización de expansiones 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:

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

    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())

    Captura de pantalla de la ventana de expansión de macros, que permite recorrer paso a paso la expansión de macros 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 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