長いマクロは読みにくい場合があります。 Visual Studio で、C および C++ マクロを展開できるようになりました。 展開されたマクロの内容をクリップボードにコピーしたり、インラインでマクロを展開して置き換えたり、マクロの展開を段階的に視覚化して、各ステージでどのように展開されるかを確認したりできます。 この記事では、これらすべての機能を試します。
前提条件
- Visual Studio バージョン 17.5 以降
サンプルを作成する
Visual Studio 2022 バージョン 17.5 以降を起動し、C++ のコンソール アプリを作成します。
既定のコードを次のように置き換えます。
#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; }
展開されたマクロをコピーする
複数のプリプロセッサ ステップが関係している場合でも、以下の手順でマクロの展開結果を確認できます。
サンプルの
main()内で、POWERマクロにカーソルを合わせます。マクロにカーソルを合わせると、[コピー]、[インライン展開]、[展開を視覚化]、[オンライン検索] のオプションが表示されます。
POWER のマクロ ウィンドウが開き、(((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) に展開されます。 ウィンドウの下部に、[コピー]、[インライン展開]、[展開の視覚化]、[オンライン検索] のオプションが表示されます。
[コピー] を選択します。
POWER行の後にコメントを追加し、[貼り付け] (CTRL+V) を実行します。 マクロの展開結果がマクロの近くにコメントとして (// (((10.0 * 20.0)* (5.0 * 2.0)) / 2.0)) 表示されます。 この操作のキーボード ショートカットは、Ctrl + M、Ctrl + C です。
マクロをインラインで展開する
次の手順でマクロをインライン展開し、マクロを展開結果で置き換えます。
- サンプルの
main()内で、POWERマクロにカーソルを合わせます。 - マクロにカーソルを合わせると、[コピー]、[インライン展開]、[展開を視覚化]、[オンライン検索] のオプションが表示されます
- [インライン展開] を選択します。
POWER()のマクロが展開された値に置き換わります。例:std::cout << "Power: " << (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) << std::endl;。 この操作は、キーボード ショートカットの Ctrl + M、Ctrl + I でも実行できます。
マクロの展開を視覚化する
マクロは 1 ステップずつ展開できます。 これは、マクロが入れ子になっている場合に、展開の手順を確認するのに便利です。 WORK マクロの展開を視覚化するには、次の手順を使用します。
サンプルの
main()内で、WORKマクロにカーソルを合わせます。マクロにカーソルを合わせると、[コピー]、[インライン展開]、[展開を視覚化]、[オンライン検索] のオプションが表示されます。
[展開の視覚化] を選択します。 この操作は、キーボード ショートカットの CTRL+M、CTRL+V でも実行できます。
マクロ展開ウィンドウが表示されます。
WORKマクロの最初の拡張が表示されます:(FORCE() * DISTANCE()):
マクロ視覚化ウィンドウでは、FORCE の展開結果が (FORCE()*DISTANCE()) であることが示されています。 ウィンドウの一重山かっこをクリックして、展開を 1 ステップずつ進めたり戻したりできます。 二重の山かっこを使うと、マクロ展開を一括で進めたり、元に戻したりできます。
右山かっこをクリックして、
FORCEマクロを展開します。 ウィンドウに、FORCEマクロの展開内容 ((MASS * ACCELERATION) * DISTANCE()) が表示されます。右山かっこをクリックして、もう 1 ステップ展開します。 ウィンドウに、
FORCEマクロの展開内容 (((10.0 * ACCELERATION) * DISTANCE())) が表示されます。
さらに展開を進めると、WORK マクロの完全な展開結果 ( ((10.0 * 20.0) * (5.0 * 2.0))) が表示されます。
二重山かっこを使用すると、マクロを一括で展開したり、最初の展開レベルに戻したりすることができます。