次の方法で共有


C/C++ マクロの展開を視覚化する

長いマクロは読みにくい場合があります。 Visual Studio で、C および C++ マクロを展開できるようになりました。 展開されたマクロの内容をクリップボードにコピーしたり、インラインでマクロを展開して置き換えたり、マクロの展開を段階的に視覚化して、各ステージでどのように展開されるかを確認したりできます。 この記事では、これらすべての機能を試します。

前提条件

  • Visual Studio バージョン 17.5 以降

サンプルを作成する

  1. Visual Studio 2022 バージョン 17.5 以降を起動し、C++ のコンソール アプリを作成します。

  2. 既定のコードを次のように置き換えます。

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

展開されたマクロをコピーする

複数のプリプロセッサ ステップが関係している場合でも、以下の手順でマクロの展開結果を確認できます。

  1. サンプルの main() 内で、POWER マクロにカーソルを合わせます。

  2. マクロにカーソルを合わせると、[コピー][インライン展開][展開を視覚化][オンライン検索] のオプションが表示されます。

    POWER マクロの展開を示すマクロ ウィンドウのスクリーンショット。

    POWER のマクロ ウィンドウが開き、(((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) に展開されます。 ウィンドウの下部に、[コピー]、[インライン展開]、[展開の視覚化]、[オンライン検索] のオプションが表示されます。

  3. [コピー] を選択します。

  4. POWER 行の後にコメントを追加し、[貼り付け] (CTRL+V) を実行します。 マクロの展開結果がマクロの近くにコメントとして (// (((10.0 * 20.0)* (5.0 * 2.0)) / 2.0)) 表示されます。 この操作のキーボード ショートカットは、Ctrl + M、Ctrl + C です。

マクロをインラインで展開する

次の手順でマクロをインライン展開し、マクロを展開結果で置き換えます。

  1. サンプルの main() 内で、POWER マクロにカーソルを合わせます。
  2. マクロにカーソルを合わせると、[コピー][インライン展開][展開を視覚化][オンライン検索] のオプションが表示されます
  3. [インライン展開] を選択します。 POWER()のマクロが展開された値に置き換わります。例: std::cout << "Power: " << (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) << std::endl;。 この操作は、キーボード ショートカットの Ctrl + M、Ctrl + I でも実行できます。

マクロの展開を視覚化する

マクロは 1 ステップずつ展開できます。 これは、マクロが入れ子になっている場合に、展開の手順を確認するのに便利です。 WORK マクロの展開を視覚化するには、次の手順を使用します。

  1. サンプルの main() 内で、WORK マクロにカーソルを合わせます。

  2. マクロにカーソルを合わせると、[コピー][インライン展開][展開を視覚化][オンライン検索] のオプションが表示されます。

  3. [展開の視覚化] を選択します。 この操作は、キーボード ショートカットの CTRL+M、CTRL+V でも実行できます。

  4. マクロ展開ウィンドウが表示されます。 WORK マクロの最初の拡張が表示されます: (FORCE() * DISTANCE()):

    マクロ展開ウィンドウのスクリーンショット。WORK マクロの展開を一度に 1 ステップずつ確認できます。

    マクロ視覚化ウィンドウでは、FORCE の展開結果が (FORCE()*DISTANCE()) であることが示されています。 ウィンドウの一重山かっこをクリックして、展開を 1 ステップずつ進めたり戻したりできます。 二重の山かっこを使うと、マクロ展開を一括で進めたり、元に戻したりできます。

  5. 右山かっこをクリックして、FORCE マクロを展開します。 ウィンドウに、FORCE マクロの展開内容 ( (MASS * ACCELERATION) * DISTANCE()) が表示されます。

  6. 右山かっこをクリックして、もう 1 ステップ展開します。 ウィンドウに、FORCE マクロの展開内容 ( ((10.0 * ACCELERATION) * DISTANCE())) が表示されます。

さらに展開を進めると、WORK マクロの完全な展開結果 ( ((10.0 * 20.0) * (5.0 * 2.0))) が表示されます。 二重山かっこを使用すると、マクロを一括で展開したり、最初の展開レベルに戻したりすることができます。

関連項目

Visual Studio で UE マクロを表示する