將 C/C++ 宏展開可視化
長宏可能難以讀取。 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; }
複製展開的宏
即使涉及數個預處理器步驟,您也可以使用下列步驟來檢查宏的展開值:
將游標放在範例中的
POWER
宏內main()
。當您將滑鼠停留在宏上方時,選項會顯示為 [複製]、 [內嵌展開]、 [可視化展開] 和 [在線搜尋]:
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。
展開宏內嵌
使用下列步驟來展開宏內嵌,以將其擴充取代為宏:
- 將游標放在範例中的
POWER
宏內main()
。 - 當您將滑鼠停留在宏上方時,選項會顯示為 [複製]、 [內嵌展開]、 [可視化展開] 和 [在線搜尋]
- 選擇 [ 展開內嵌]。 宏
POWER()
會取代為其展開的值:std::cout << "Power: " << (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) << std::endl;
。 此動作的鍵盤快捷方式為 CTRL+M、CTRL+I。
將宏展開可視化
您可以一次展開一個步驟的宏。 當有巢狀宏,而且您想要查看擴充逐步時,這會很有用。 若要將宏的 WORK
宏展開可視化,請使用下列步驟:
將游標放在範例中的
WORK
宏內main()
。當您將滑鼠停留在宏上方時,選項會顯示為 [複製]、[內嵌展開]、[可視化展開] 和 [在線搜尋]。
選擇 [ 可視化展開]。 此動作的鍵盤快捷方式是 CTRL+M,後面接著 CTRL+V。
宏展開視窗隨即出現。 宏的第一個展開
WORK
會顯示:(FORCE() * DISTANCE())
宏視覺效果視窗會在 FORCE 上開啟,以顯示它一開始展開為 (FORCE()*DISTANCE())。 視窗中有單一角括弧,可一次向前和向後移動單一展開。 雙角括弧會完全展開或完全復原宏展開。
按兩下右角括弧展開
FORCE
宏。 視窗現在會顯示FORCE
宏展開:(MASS * ACCELERATION) * DISTANCE()
。按兩下右角括弧展開另一個步驟。 視窗現在會顯示
FORCE
宏展開:((10.0 * ACCELERATION) * DISTANCE())
。
繼續展開宏,以查看宏的完整擴充 WORK
,也就是: ((10.0 * 20.0) * (5.0 * 2.0))
。
您可以使用雙角括弧來完整展開宏,或將展開反轉至第一個展開層級。