Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
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 con 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, aparecen las opciones 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 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.
Elija Copiar.
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:
- Coloque el cursor en la
POWER
macro dentromain()
del ejemplo. - Al mantener el puntero sobre la macro, aparecen las opciones copiar, expandir en línea, visualizar la expansión y buscar en línea
- 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:
Coloque el cursor en la macro
WORK
dentro demain()
del ejemplo.Al mantener el puntero sobre la macro, aparecen las opciones copiar, expandir en línea, visualizar la expansión y buscar en línea.
Elija Visualizar expansión. La combinación de teclas 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 macro
WORK
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 expanden o deshacen completamente la expansión de macros.
Haga clic en el corchete angular derecho para expandir la macro
FORCE
. La ventana muestra ahora la expansión del macroFORCE
:(MASS * ACCELERATION) * DISTANCE()
.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.