分享方式:


將 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. 將游標放在範例中的 POWER 宏內 main()

  2. 當您將滑鼠停留在宏上方時,選項會顯示為 [複製]、 [內嵌展開]、 [可視化展開] 和 [在線搜尋]:

    Screenshot of the macro window, showing the POWER macro expansion.

    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. 將游標放在範例中的 POWER 宏內 main()
  2. 當您將滑鼠停留在宏上方時,選項會顯示為 [複製]、 [內嵌展開]、 [可視化展開] 和 [在線搜尋]
  3. 選擇 [ 展開內嵌]。 宏 POWER() 會取代為其展開的值: std::cout << "Power: " << (((10.0 * 20.0) * (5.0 * 2.0)) / 2.0) << std::endl;。 此動作的鍵盤快捷方式為 CTRL+M、CTRL+I。

將宏展開可視化

您可以一次展開一個步驟的宏。 當有巢狀宏,而且您想要查看擴充逐步時,這會很有用。 若要將宏的 WORK 宏展開可視化,請使用下列步驟:

  1. 將游標放在範例中的 WORK 宏內 main()

  2. 當您將滑鼠停留在宏上方時,選項會顯示為 [複製]、[內嵌展開]、[可視化展開] 和 [在線搜尋]。

  3. 選擇 [ 可視化展開]。 此動作的鍵盤快捷方式是 CTRL+M,後面接著 CTRL+V。

  4. 宏展開視窗隨即出現。 宏的第一個展開WORK會顯示: (FORCE() * DISTANCE())

    Screenshot of the macro expansion window, which allows you to step through the WORK macro expansion one step at a time.

    宏視覺效果視窗會在 FORCE 上開啟,以顯示它一開始展開為 (FORCE()*DISTANCE())。 視窗中有單一角括弧,可一次向前和向後移動單一展開。 雙角括弧會完全展開或完全復原宏展開。

  5. 按兩下右角括弧展開 FORCE 宏。 視窗現在會顯示 FORCE 宏展開: (MASS * ACCELERATION) * DISTANCE()

  6. 按兩下右角括弧展開另一個步驟。 視窗現在會顯示 FORCE 宏展開: ((10.0 * ACCELERATION) * DISTANCE())

繼續展開宏,以查看宏的完整擴充 WORK ,也就是: ((10.0 * 20.0) * (5.0 * 2.0))。 您可以使用雙角括弧來完整展開宏,或將展開反轉至第一個展開層級。

另請參閱

在 Visual Studio 中檢視 UE 巨集