Compartilhar via


Visualizar a expansão de macros em C/C++

Macros longas podem ser difíceis de ler. O Visual Studio agora pode expandir macros C e C++. Você pode obter uma cópia na área de transferência da aparência da macro expandida, substituir a macro embutida por sua expansão e expandir passo a passo uma macro para ver como ela se parece em cada estágio da expansão. Neste artigo, você experimenta todos esses recursos.

Pré-requisitos

  • Visual Studio versão 17.5 ou posterior

Criar o exemplo

  1. Inicie o Visual Studio 2022, versão 17.5 ou posterior, e crie um aplicativo de console C++.

  2. Substitua o código padrão 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;
    }
    

Copiar uma macro expandida

Você pode inspecionar o valor expandido de uma macro, mesmo quando várias etapas de pré-processador estão envolvidas, usando as seguintes etapas:

  1. Coloque o POWER cursor na macro dentro main() do exemplo.

  2. À medida que você passa o mouse sobre a macro, aparecem as opções para Copiar, Expandir Embutido, Visualizar Expansão e Pesquisar Online:

    Captura de tela da janela de macro, mostrando a expansão da macro POWER.

    A janela macro é aberta em POWER para mostrar que ela se expande para (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0). As opções para copiar, expandir embutido, expansão visual e pesquisar online aparecem na parte inferior da janela.

  3. Escolha Copiar.

  4. Crie um comentário após a POWER linha e escolha colar (CTRL+V). A expansão da macro, como um comentário próximo à sua macro, é semelhante a: // (((10.0 * 20.0)* (5.0 * 2.0)) / 2.0). O atalho de teclado para esta ação é CTRL+M, CTRL+C.

Expandir uma macro embutida

Use as etapas a seguir para expandir uma macro embutida, que substitui a macro por sua expansão:

  1. Coloque o POWER cursor na macro dentro main() do exemplo.
  2. À medida que você passa o mouse sobre a macro, aparecem as opções para Copiar, Expandir Embutido, Visualizar Expansão e Pesquisar Online
  3. Escolha Expandir embutido. A POWER() macro é substituída por seu valor expandido: std::cout << "Power: " << (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) << std::endl;. O atalho de teclado para essa ação é CTRL+M, CTRL+I.

Visualize a expansão de macro

Você pode expandir uma macro uma etapa de cada vez. Isso é útil quando há macros aninhadas e você deseja ver a expansão passo a passo. Para visualizar a expansão da WORK macro, use as seguintes etapas:

  1. Coloque o WORK cursor na macro dentro main() do exemplo.

  2. À medida que você passa o mouse sobre a macro, aparecem as opções para Copiar, Expandir Embutido, Visualizar Expansão e Pesquisar Online.

  3. Escolha Visualizar expansão. O atalho de teclado para essa ação é CTRL+M seguido por CTRL+V.

  4. A janela de expansão de macro é exibida. A primeira expansão da WORK macro é visível: (FORCE() * DISTANCE()):

    Captura de tela da janela de expansão de macro, que permite percorrer a expansão de macro WORK uma etapa de cada vez.

    A janela de visualização de macro é aberta em FORCE para mostrar que ela se expande inicialmente para (FORCE()*DISTANCE()). Existem colchetes angulares únicos na janela para avançar e retroceder uma única expansão de cada vez. Os colchetes angulares duplos expandem ou desfazem totalmente a expansão macro.

  5. Clique no colchete angular direito para expandir a FORCE macro. A janela agora mostra a expansão da FORCE macro: (MASS * ACCELERATION) * DISTANCE().

  6. Clique no colchete angular direito para expandir outra etapa. A janela agora mostra a expansão da FORCE macro: ((10.0 * ACCELERATION) * DISTANCE()).

Continue a expandir a macro para ver a expansão completa da WORK macro, que é: ((10.0 * 20.0) * (5.0 * 2.0)). Você pode usar os colchetes angulares duplos para expandir totalmente a macro ou para reverter a expansão para o primeiro nível de expansão.

Confira também

Exibir macros da UE no Visual Studio