用於升級C++程序代碼的Visual Studio IDE 工具
Visual Studio 可協助您使用編譯程式選項、程式代碼分析警告和編輯器功能,例如快速修正、快速諮詢和增強式滾動條,來升級舊版C++程序代碼。 「舊版程式代碼」一詞是指下列任何類別:
先前由Microsoft C++編譯程式 (MSVC) 允許但從未符合C++標準的程序代碼。
若要升級較舊的不符合 MSVC 程式代碼,請開啟
/permissive-
編譯程式選項。 不符合使用方式的所有實例都會在程式碼編輯器中加上紅色波浪線。 [ 錯誤清單 ] 視窗中的錯誤訊息包含如何修正錯誤的建議。 按兩下錯誤碼以移至檔案中的說明頁面。 如果一次修正所有錯誤是不切實際的,您可以開啟/permissive-
選項、修正某些錯誤,然後再次關閉選項,以階段升級不符合規範的程序代碼。 程序代碼會使用新的改進進行編譯,您可以稍後返回並修正其餘問題。/permissive-
如需不符合 MSVC 程式代碼的範例,請參閱頁面。舊版C++標準中允許但已在更新版本中已被取代或移除的程序代碼。
若要升級至較新的語言標準,請將 C++ Language Standard 選項設定為所需的標準,並修正所引發的任何編譯錯誤。 一般而言,建議將語言標準設定為
/std:c++17
或/std:c++20
。 升級至較新的標準時引發的錯誤與使用/permissive-
選項時引發的錯誤無關。符合所有標準版本的程序代碼,但在新式C++中已不再被視為最佳做法。
若要識別建議變更的程式代碼,請執行 程式代碼分析。
開啟並轉換舊版專案
如果您的舊版專案是以舊版 Visual Studio 為基礎,您可以在 Visual Studio 2017 或 Visual Studio 2019 中開啟它。 Visual Studio 會自動將它轉換成目前的項目架構,並支援所有最新的編譯程式和 IDE 功能。
如需詳細資訊,請參閱 從舊版Visual Studio升級C++專案。
搜尋程式代碼基底
升級程式代碼基底通常牽涉到搜尋多個檔案。 若要搜尋程式代碼基底中的任何專案,請按 Ctrl+T 以顯示 [移至所有 ] 搜尋方塊。
若要縮小搜尋範圍,請輸入其中一個 1 個字母篩選條件,後面接著空格,然後輸入您要尋找的專案。
錯誤清單
設定所需的語言標準C++和任何其他編譯程式選項 (項目>屬性>一般)之後,請按 Ctrl+Shift+B 編譯專案。 您可以預期在程式代碼的各個位置看到一些錯誤和警告,格式為紅色波浪線。 錯誤也會出現在 [錯誤清單] 中。 如需特定錯誤的詳細資訊,請按兩下錯誤碼以移至檔中的說明頁面。 以 「C」 開頭的錯誤碼是編譯程式錯誤。 以 「MSB」 開頭的代碼是 MSBuild 錯誤,表示專案組態發生問題。
文件健康情況指示器
編輯器底部的檔健康情況指標會顯示目前檔中的錯誤和警告數目,並可讓您直接從一個警告/錯誤巡覽至下一個。
在許多情況下,您可以在 Visual Studio 變更歷程記錄和一致性改善檔中找到特定錯誤的詳細資訊。
使用程式代碼分析將程式代碼現代化
升級時,建議您在專案上執行程序代碼分析,讓程式代碼至少符合Microsoft原生建議規則。 這些規則是由Microsoft所定義的規則和C++核心指導方針的子集所定義。 藉由符合這些,您將會大幅減少或消除常見的 Bug 來源,同時讓您的程式代碼更容易閱讀,因此更容易維護。 默認會啟用使用 Microsoft 原生建議規則的程式代碼分析。 您可以在 [項目>屬性>程序代碼分析] 底下啟用其他規則。 違反其中一項規則的程式代碼會標示為警告,並在程式代碼編輯器中使用綠色波浪線加上底線。 將滑鼠停留在波浪線上方,以查看 描述問題的 QuickInfo 工具提示。
按兩下 [程序代碼] 資料列中的篩選圖示,選擇要顯示哪些警告。
程序代碼分析錯誤和警告也會出現在 [錯誤清單] 中,就像編譯程式錯誤一樣。
您可以變更哪些規則為作用中,並建立自定義規則集。 如需使用程式代碼分析的詳細資訊,請參閱 C/C++ 程式代碼分析概觀。
使用快速動作將程式代碼現代化
程式代碼編輯器會提供一些常見建議的快速動作。 當燈泡圖示顯示時,您可以按下它以查看可用的快速動作。
將巨集轉換成 constexpr 函式
下圖顯示使用名為 AVERAGE
的巨集,其具有預設語意色彩標示。 此影像也會顯示滑鼠游標停留在它的上方時顯示的 QuickInfo 工具提示:
由於新式C++不建議使用巨集,Visual Studio 可讓您輕鬆地將巨集轉換成 constexpr
函式:
以滑鼠右鍵按下
AVERAGE
並選擇 [移至定義]。按兩下螺絲起子圖示,然後選擇 [將巨集轉換成 constexpr]
巨集會轉換,如下所示:
的呼叫 AVERAGE
現在會標示為函式呼叫,而 [快速諮詢] 工具提示會顯示函式的推斷類型:
將變數初始化
未初始化的變數可以保存導致嚴重 Bug 的隨機值。 程式代碼分析會標幟這些實例,而編輯器會提供快速動作:
轉換為原始字串常值
原始字串常值比具有內嵌逸出字元的字串更容易輸入,而且更容易輸入。 以滑鼠右鍵按下字串,然後選擇 [快速動作 ] 將它轉換成原始字串常值。
字串會轉換成: R"(C:\Users\bjarnes\demo\output.txt)"
。