Visual Studio 2013 中 Visual C++ 的新功能

本文件介紹 Visual Studio 2013 中的 Visual C++ 的新功能及增強功能。

如需 Visual Studio 2013 其他新增功能的詳細資訊,請參閱 Visual Studio 2013 的新功能

改良的 ISO C/C++ 標準支援

編譯器

  • 支援下列 ISO C++11 語言功能:

  • 支援下列 ISO C99 語言功能:

    • _Bool

    • 複合常值。

    • 指定的初始設定式。

    • 程式碼的混合宣告。

  • 字串常值轉換為可修改的值可以使用新的編譯器選項 /Zc:strictStrings 來禁止。在 C++98 中,從字串常值到 char * (以及寬字串常值到 wchar_t *) 的轉換已被取代。在 C++11 中,轉換已完全移除。雖然編譯器可以嚴格遵守這個標準,但可提供 /Zc:strictStrings 選項,讓您可以控制轉換。選項預設為關閉。請注意,當您在偵錯模式中使用這個選項時,無法編譯 STL。

  • **左/右值參考轉型。**使用右值參考,C++11 可以清楚區別左值和右值。在過去,Visual C++ 編譯器在特定轉換情節中不提供此功能。已加入新的編譯器選項 /Zc:rvalueCast,將使編譯器符合 C++ 語言工作文件 (請參閱第 5.4 節 [expr.cast]/1)。

    當這個選項未指定時的預設行為,與 Visual Studio 2012 中的預設行為相同。

注意事項注意事項

* 在預設的函式中,不支援使用 =default 要求成員移動建構函式和移動指派運算子。

C99 程式庫

針對下列標頭中遺漏的函式會加入宣告和實作:math.hctype.hwctype.hstdio.hstdlib.hwchar.h。同時加入的有新標頭 complex.hstdbool.hfenv.hinttypes.h,以及在其中宣告的所有函式的實作。有新的 C++ 包裝函式標頭 (ccomplexcfenvcinttypesctgmath),也有一些其他的包裝函式標頭已更新 (ccomplexcctypeclocalecmathcstdintcstdiocstringcwcharcwctype)。如需詳細資訊,請參閱 Visual Studio 2013 中的 C99 程式庫支援

標準樣板程式庫

  • 支援 C++11 明確轉換運算子、初始設定式清單、限定範圍列舉和 variadic 範本。

  • 所有容器現在支援 C++11 精細項目要求。

  • 支援下列 C++14 功能:

    • 「透明運算子函式」less<>greater<>plus<>multiplies<>,依此類推。

    • make_unique<T>(args...)make_unique<T[]>(n)

    • cbegin()/cend()rbegin()/rend()crbegin()/crend() 非成員函式。

  • <atomic> 已收到許多效能增強功能。

  • <type_traits> 已收到主要穩定和程式碼修正。

重大變更

這個改進的 ISO C/C++ 標準支援可能需要對現有程式碼進行變更,使其符合 C++11 並在 Visual Studio 2013 中的 Visual C++ 中正確編譯。如需詳細資訊,請參閱Visual C++ 的重大變更

如需新的 C++11/14 語言和 STL 功能的詳細資訊,請參閱 C++11 功能的支援 (現代 C++)Visual Studio 2013 中的 C++11/14 STL 功能、修正和重大變更

Visual C++ 程式庫增強功能

  • C++ REST SDK 已加入。它有 REST 服務的現代 C++ 實作。如需詳細資訊,請參閱 C++ REST SDK

  • C++ AMP 紋理支援已增強。現在包含對 Mipmap 和新的取樣模式的支援。

  • PPL 工作支援多個排程的技術和非同步偵錯。新的應用程式開發介面可讓您建立一般結果和例外狀況的 PPL 工作。

C++ 應用程式效能

  • Auto-Vectorizer 現在會辨認並最佳化更多 C++ 模式,讓程式碼執行更快速。

  • ARM 平台和 Atom 微架構程式碼品質改善。

  • __vectorcall 呼叫慣例已加入。使用 __vectorcall 呼叫慣例傳遞向量類型引數,以使用向量暫存器。

  • 新連結器選項。/Gw (編譯器) 和 /Gy (組譯工具) 參數會啟用連結器最佳化以產生更精簡的二進位檔。

  • C++ AMP 共用記憶體支援,可降低或排除 CPU 和 GPU 之間的資料複製。

  • 特性指引最佳化選項 (PGO) 增強功能:

    • 由縮減使用 PGO 所最佳化之應用程式工作集而產生的效能提升。

    • Windows 市集應用程式開發的新 PGO。

Windows 市集應用程式開發支援

  • **支援值結構中的 Boxed 類型。**透過使用可為 null 的欄位,例如 IBox<int>^ 而非 int,您現在可以定義實值類型。這表示欄位可以有值,或是等於 nullptr。

  • **更豐富的例外狀況資訊。**C++/CX 支援新 Windows 錯誤模型,能夠跨應用程式二進位介面 (ABI) 擷取及散佈豐富的例外狀況資訊,包括呼叫堆疊和自訂訊息字串。

  • **Object::ToString() 現在是虛擬的。**您現在可以覆寫使用者定義的 Windows 執行階段 ref 類型中的 ToString

  • **支援被取代的應用程式開發介面。**公用 Windows 執行階段應用程式開發介面現在已標示為已被取代,並且有指定的、顯示為建置警告的自訂訊息,可以提供移轉指引。

  • **偵錯工具改善。**支援原生/JavaScript Interop 偵錯、Windows 執行階段例外狀況診斷和非同步程式碼偵錯 (Windows 執行階段和 PPL)。

注意事項注意事項

除了本節所述的 C++ 專用功能和加強功能之外,Visual Studio 中的其他增強功能也可以協助您撰寫更好的 Windows 市集應用程式。如需這些功能的詳細資訊,請參閱 Windows 8.1 功能指南。如需新應用程式範本的詳細資訊,請參閱 Windows 市集應用程式的 C#、VB 及 C++ 專案範本。如需新平台功能的清單,請參閱 Windows 8.1 Preview:開發人員適用的新 API 和功能

診斷加強功能

  • **偵錯工具改善。**支援非同步偵錯和 Just My Code 偵錯。

  • **程式碼分析分類。**您現在可以檢視 [程式碼分析器] 的分類輸出,協助您尋找並修正程式碼缺失。

  • **XAML 診斷。**您現在可以在 XAML 中診斷 UI 回應性和電池用量問題。

  • 圖形和 GPU 偵錯改進。

    • 在實際的裝置上進行遠端擷取和播放。

    • 同時 C++ AMP 和 CPU 偵錯。

    • 改進的 C++ AMP 執行階段診斷。

    • HLSL 計算著色器追蹤偵錯。

3D 圖形加強功能

  • 影像內容管線支援預乘的 Alpha DDS 格式。

  • 影像編輯器使用內部預乘的 Alpha 進行轉譯,並藉以避免轉譯變形 (例如深色光暈)。

  • 影像及模型編輯器。[影像編輯器] 和 [模型編輯器] 中的 [著色器設計工具] 現在支援建立使用者定義的篩選條件。

IDE 和產能

Visual Studio IDE 已有顯著的改進,可協助您在使用 C++ 撰寫程式碼時更具生產力。

  • **改良的程式碼格式設定。**您可以將多個格式設定套用至您的 C++ 程式碼。您可以使用這些設定,來控制括號、關鍵字、縮排、間距和換行的新行位置。當您完成陳述式和區塊時和當您將程式碼貼入檔案時,程式碼會自動格式化。若要修改格式設定,在 Visual Studio 的功能表列上,選擇 [工具]、[選項],展開 [文字編輯器]、[C/C++] 和 [格式化] 節點,然後進行變更。您也可以使用 [快速啟動] 方塊來存取這些選項。

  • **以大括號完成。**C++ 程式碼現在會自動完成對應至這些開頭字元的結尾字元:

    • { (大括號)

    • [ (方括弧)

    • ( (括號)

    • ' (單引號)

    • " (雙引號)

  • 其他 C++ 自動完成功能。

    • 加入類別類型的分號。

    • 完成原始字串常值的括號。

    • 完成多行註解 (/* */)

  • 在顯示文字比對清單後,尋找所有參考現在會自動解析並在背景中篩選參考。若要停用參考解析,請在 Visual Studio 的功能表列上,選擇 [工具]、[選項],展開 [文字編輯器]、[C/C++] 和 [進階] 節點,然後變更 [參考] 底下的 [停用解析] 設定。

若要修改 [以大括號完成] 設定,在 Visual Studio 的功能表列上,選擇 [工具]、[選項],展開 [文字編輯器]、[C/C++] 和 [一般] 節點,然後進行變更。您也可以依序展開 [文字編輯器]、[所有語言] 和 [一般] 節點,變更所有 Visual Studio 語言的設定。

若要修改特定 C++ 設定,在功能表列上選擇 [工具]、[選項],展開 [文字編輯器]、[C/C++] 和 [進階] 節點,然後進行變更。

  • **以內容為主的成員清單篩選。**無法存取的成員會從 IntelliSense 成員清單中篩選掉。例如,私用成員在成員清單中不會顯示,除非您修改實作類型的程式碼。當成員清單開啟時,您可以按 Ctrl+J 移除一個篩選層級 (只適用於目前成員清單視窗)。您可以再按一次 Ctrl+J,移除文字篩選並顯示每個成員。

  • **參數說明捲動。**在參數說明工具提示中顯示的函式簽章現在會根據您實際輸入參數的數目變更,而不是根據目前內容顯示任意簽章並且不加以更新。當它顯示在巢狀函式上時,參數說明也會正常運作。

  • **切換標頭檔/程式碼檔。**您現在可以使用捷徑功能表上的命令或鍵盤快速鍵,在標頭和其對應的程式碼檔之間切換。

  • 可調整大小的 C++ 專案屬性視窗。

  • **C++/CX 和 C++/CLI 中的事件處理常式程式碼自動產生。**當您輸入程式碼,在 C++/CX 或 C++/CLI 程式碼檔中加入事件處理常式時,編輯器可以自動產生委派執行個體和事件處理常式定義。當事件處理常式程式碼可自動產生時,工具提示視窗會出現。

  • **DPI 感知加強功能。**應用程式資訊清單檔案的 DPI 感知設定現在支援「以螢幕為基礎的高 DPI 感知」設定。

  • **更快速組態切換。**對於大型應用程式,切換組態 (特別是後續切換作業) 執行更快速。

  • 建置階段效率。

    • **更快速組建。**許多最佳化和多核心利用會讓建置更快速,尤其是對大型專案來說。具有 C++ WinMD 參考的 C++ 應用程式,其累加建置同樣更加快速。
  • 如需 IDE 的其他新增和加強功能的相關資訊,請參閱 Visual Studio 2013 的新功能和它所參考的其他文件。

請參閱

概念

Visual Studio 2013 的新功能

其他資源

Visual C++ Team 部落格