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
Inicie Visual Studio 2022, versión 17.5 o posterior, y cree una aplicación de consola de C++.
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:
Coloque el cursor en la
POWER
macro dentromain()
del ejemplo.Al mantener el puntero sobre la macro, las opciones aparecen copiar, expandir en línea, visualizar la expansión y buscar en línea:
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.
Elija Copiar.
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:
- Coloque el cursor en la
POWER
macro dentromain()
del ejemplo. - Al mantener el puntero sobre la macro, las opciones aparecen copiar, expandir en línea, visualizar expansión y buscar en línea.
- 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:
Coloque el cursor en la
WORK
macro dentromain()
del ejemplo.Al mantener el puntero sobre la macro, las opciones aparecen como Copiar, Expandir en línea, Visualizar expansión y Buscar en línea.
Elija Visualizar expansión. El método abreviado de teclado de esta acción es CTRL+M seguido de CTRL+V.
Aparece la ventana de expansión de macros. La primera expansión de la
WORK
macro es visible: :(FORCE() * DISTANCE())
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.
Haga clic en el corchete angular derecho para expandir la
FORCE
macro. La ventana muestra ahora la expansión de macrosFORCE
:(MASS * ACCELERATION) * DISTANCE()
.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.