Partager via


Visualiser l’expansion de macro C/C++

Les macros longues peuvent être difficiles à lire. Visual Studio peut maintenant développer des macros C et C++. Vous pouvez obtenir une copie dans le Presse-papiers de l’apparence de la macro développée, remplacer la macro inline par son expansion et développer pas à pas une macro pour voir ce qu’elle ressemble à chaque étape de l’expansion. Dans cet article, vous allez tester toutes ces fonctionnalités.

Prérequis

  • Visual Studio version 17.5 ou ultérieure

Créer l’exemple

  1. Démarrez Visual Studio 2022, version 17.5 ou ultérieure, puis créez une application console C++.

  2. Remplacez le code par défaut par :

    #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;
    }
    

Copier une macro développée

Vous pouvez inspecter la valeur développée d’une macro, même lorsque plusieurs étapes de préprocesseur sont impliquées, en procédant comme suit :

  1. Placez le curseur sur la macro à l’intérieur POWER main() de l’exemple.

  2. Lorsque vous pointez sur la macro, les options s’affichent pour copier, développer inline, visualiser l’expansion et rechercher en ligne :

    Capture d’écran de la fenêtre macro, montrant l’extension de macro POWER.

    La fenêtre de macro est ouverte sur POWER pour montrer qu’elle se développe sur (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0). Les options de copie, de développement inline, d’expansion visuelle et de recherche en ligne s’affichent en bas de la fenêtre.

  3. Choisissez Copier.

  4. Créez un commentaire en suivant la POWER ligne et choisissez Coller (Ctrl+V). L’expansion de la macro, sous la forme d’un commentaire près de votre macro, ressemble à ceci : // (((10.0 * 20.0)* (5.0 * 2.0)) / 2.0). le raccourci clavier de cette action est Ctrl+M, Ctrl+C.

Développer une macro inline

Procédez comme suit pour développer une macro inline, qui remplace la macro par son expansion :

  1. Placez le curseur sur la macro à l’intérieur POWER main() de l’exemple.
  2. Lorsque vous pointez sur la macro, les options s’affichent pour copier, développer inline, visualiser l’expansion et rechercher en ligne
  3. Choisissez Développer inline. La POWER() macro est remplacée par sa valeur développée : std::cout << "Power: " << (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) << std::endl;. Le raccourci clavier de cette action est Ctrl+M, Ctrl+I.

Visualiser l’expansion des macros

Vous pouvez développer une macro une étape à la fois. Cela est utile lorsqu’il existe des macros imbriquées et que vous souhaitez voir l’extension pas à pas. Pour visualiser l’extension de macro pour la WORK macro, procédez comme suit :

  1. Placez le curseur sur la macro à l’intérieur WORK main() de l’exemple.

  2. Lorsque vous pointez sur la macro, les options s’affichent pour copier, développer inline, visualiser l’expansion et rechercher en ligne.

  3. Choisissez Visualiser l’expansion. Le raccourci clavier de cette action est Ctrl+M suivi de Ctrl+V.

  4. La fenêtre d’extension de macro s’affiche. La première expansion de la WORK macro est visible : (FORCE() * DISTANCE())

    Capture d’écran de la fenêtre d’expansion de macro, qui vous permet de parcourir l’extension de macro WORK une étape à la fois.

    La fenêtre de visualisation de macro est ouverte sur FORCE pour montrer qu’elle se développe initialement sur (FORCE()*DISTANCE()). Il existe des crochets à angle uniques dans la fenêtre pour avancer et reculer une seule expansion à la fois. Les crochets doubles s’étendent ou annulent entièrement l’expansion de la macro.

  5. Cliquez sur le crochet droit pour développer la FORCE macro. La fenêtre affiche maintenant l’extension FORCE de macro : (MASS * ACCELERATION) * DISTANCE().

  6. Cliquez sur le crochet droit pour développer une autre étape. La fenêtre affiche maintenant l’extension FORCE de macro : ((10.0 * ACCELERATION) * DISTANCE()).

Continuez à développer la macro pour voir l’extension complète de la WORK macro, à savoir : ((10.0 * 20.0) * (5.0 * 2.0)). Vous pouvez utiliser les crochets doubles pour développer entièrement la macro ou inverser l’expansion au premier niveau d’expansion.

Voir aussi

Visualiser des macros UE dans Visual Studio