共用方式為


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

文件會在 Visual Studio 2012 中的 Visual C++的新功能及增強功能。

如需 Visual Studio 2012中加入其他的詳細資訊,請參閱 Visual Studio 2012 的新功能

注意事項注意事項

如需整合式開發環境 (IDE) 建立 Windows 市集 應用程式的開發人員的 (IDE) 功能的詳細資訊, 使用 Visual Studio 2012,開發 Windows 市集應用程式請參閱

改良的 C++11 標準支援

Hh409293.collapse_all(zh-tw,VS.110).gif標準樣板程式庫

  • 支援新的 STL 標題: <atomic>、 <chrono>、 <condition_variable>、 <filesystem>、 <future>、 <mutex>、 <ratio>和 <thread>。

  • 若要最佳化記憶體資源使用方式,容器會較小。 例如,在具有預設值的 x86 版本的方式, std::vector 在 Visual Studio 2010 的 16 位元組縮小到 Visual Studio 2012的 12 個位元組,因此, std::map 在 Visual Studio 2010 的 16 位元組縮小到 Visual Studio 2012的 8 個位元組。

  • 已啟用,但不需要由標準的 C++11,可怕 Iterator 實作。 如需詳細資訊,請參閱 XPS 文件 可怕 Iterator 指派和初始化

Hh409293.collapse_all(zh-tw,VS.110).gif其他 C++11 加強功能

  • **範圍架構的 for 迴圈。**您可以撰寫與陣列、STL 容器和 Windows 執行階段 集合搭配使用的格式為 for (for-range-declaration:expression)之更強大的迴圈。 這是核心語言支援的一部分。 如需詳細資訊,請參閱以範圍為基礎的 for 陳述式 (C++)

  • 無狀態 Lambda,為程式碼區塊是空 Lambda 引入資料開始 [] 並不會擷取區域變數,隱含現在是函式的轉換指標資料 C++11 標準要求。 如需詳細資訊,請參閱在 C++ 中使用 lambda 運算式

  • **範圍列舉支援。**C++ enum class 列舉金鑰現在支援。 下列程式碼示範這個列舉索引鍵與先前 enum 行為不同。

    enum class Element { Hydrogen, Helium, Lithium, Beryllium };
    void func1(Element e);
    func1(Hydrogen); // error C2065: 'Hydrogen' : undeclared identifier
    func1(Element::Helium); // OK
    

Windows 市集 應用程式開發支援

Visual C++ 編譯器和連結器

  • **自動 vectorizer。**編譯器分析迴圈程式碼和,可能的話,發出使用向量暫存器和指示在所有現代處理器的指示。 這個迴圈的執行速度。 (處理器指示稱為 SSE, Streaming SIMD Extensions)。 因為它會自動套用,您不需要啟用或要求此最佳化。

  • **自動 parallelizer。**編譯器可以在分析散佈或多核心處理器的計算的程式碼和發出指令的迴圈。 這可讓迴圈的執行速度。 根據預設,,因為它未啟用您必須要求此最佳化。 在大部分情況下,它說明包含 #pragma loop(hint_parallel(N)) 將您想要平行迴圈之前的程式碼。

    自動 vectorizer 和自動 parallelizer 可能,以便計算跨多個核心和程式碼被傳用在每個核心使用它的向量暫存器。 如需詳細資訊,請參閱自動平行處理錯誤和警告

在 Visual Studio 2012 Update 1的新功能

  • ,在建立您的 C++ 程式碼時,請以 Windows XP

    您可以使用 Visual C++ 編譯器和程式庫以 Windows XP 和 Windows Server 2003。 如需詳細資訊,請參閱為 Windows XP 設定 C++ 11 程式

平行程式設計支援

Hh409293.collapse_all(zh-tw,VS.110).gifC++ Accelerated Massive Parallelism (AMP)

C++ AMP 加速您的 C++ 程式碼執行利用通常存在資料平行硬體,因為在一個分離圖形卡的軟體。 C++ AMP 程式撰寫模型包含多維陣列、索引、記憶體傳輸、並排顯示和數學函式程式庫。 使用 AMP C++ 語言擴充功能和編譯器限制,您可以控制資料產生方式從 CPU 移動到 GPU 和。 如需詳細資訊,請參閱C++ AMP (C++ Accelerated Massive Parallelism)

Hh409293.collapse_all(zh-tw,VS.110).gifC++ Accelerated Massive Parallelism (AMP) 偵錯和程式碼剖析

**偵錯。**使用 C++ AMP 目標 GPU 的應用程式的偵錯經驗與其他 C++ 應用程式的偵錯。 這包括前面提到的新的平行偵錯加法。 請參閱 偵錯 GPU 程式碼

**設定檔。**其中出現在設定檔支援根據 C++ AMP 和其他 Direct3D 的程式設計模型的 GPU 活動。 請參閱 GPU 活動圖

Hh409293.collapse_all(zh-tw,VS.110).gif一般平行程式設計加強功能

使用移至多核心和許多核心結構的硬體,開發人員可能不再依賴從單一核心的持續性遞增時鐘速率。 在 並行執行階段 的平行程式設計支援可以讓開發人員利用這些新的結構。

在 Visual Studio 2010中,強大的 C++ 平行程式庫 (例如 平行模式程式庫 (PPL) 與功能一起推出,利用並行表示複雜資料流程管線。 在 Visual Studio 2012中,這些程式庫會擴充為開發人員需要大部分的平行模式提供更好的效能、更多控制和提供豐富的支援。 現在提供的廣度包括:

Hh409293.collapse_all(zh-tw,VS.110).gif一般平行偵錯加強功能

除了 [平行工作] 視窗和 [平行堆疊] 視窗以外, Visual Studio 2012 提供了新的 [平行監看式] 視窗,讓您可以檢查運算式的值在所有執行緒和處理序,並實作排序和篩選資料的結果。 您也可以使用您的視覺化檢視延伸視窗,因此,您可以利用所有工具視窗的新多處理序支援。 如需詳細資訊,請參閱HOW TO:使用平行監看式視窗

IDE

當您在 C++ 時,程式碼在 Visual Studio IDE 的工具可以協助明顯改善您更具生產力。 如需 IDE 加強功能的詳細資訊,請參閱 Visual Studio 2012 產品重點說明

  • **Visual Studio 樣板支援。**您現在可以使用 Visual Studio 範本技術建立 C++ 專案範本和項目範本。

  • **非同步方案載入。**專案現在是您可以啟動快速地運作最初如此方案中載入的 asynchronously-the 關鍵區段。

  • **遠端偵錯的自動化部署。**檔案的部署遠端偵錯的 Visual C++ 簡化。 在專案內容功能表會自動複製到的部署選項遠端電腦上偵錯組態屬性所指定的檔案。 檔案到遠端電腦不再需要手動複製。 如需詳細資訊,請參閱遠端偵錯本機所建立的專案

  • **C++/CLI IntelliSense。**C++/CLI 現在有完整的 IntelliSense 支援。 IntelliSense 功能 (例如快速諮詢、參數說明、列出成員、自動完成為 C++/CLI 現在運作。 此外,在文件和 IDE 加強功能清單的另一個 IntelliSense 為 C++/CLI 也運作。

  • **更豐富的 IntelliSense 工具提示。**C++ IntelliSense 快速諮詢工具提示中顯示更豐富的 XML 文件註解樣式資訊。 如果您使用中的應用程式開發介面程式庫 (例如, C++ AMP 有 XML 文件所宣告的註解,則 IntelliSense 工具提示中顯示其他資訊。 此外,因此,如果您的程式碼使用 XML 文件註解, IntelliSense 工具提示中顯示更多的資訊。

  • **C++ 程式碼建構。**基本架構程式碼的參數、否則、迴圈和其他基本程式碼建構來說,在列出成員下拉式清單。 選取程式碼片段從清單插入至您的程式碼會填入必要的邏輯。 您也可以建立自己的自訂程式碼片段用於編輯器。 如需詳細資訊,請參閱程式碼片段

  • **列出成員增強功能。**當您輸入程式碼時,程式碼編輯器中列出成員下拉式清單會自動出現。 結果篩選,因此,只相關的成員,會顯示您輸入。 您可以控制這種由清單在 [選項] 對話方塊的成員使用 [文字編輯器], [C/C++], [進階] 下的篩選邏輯。 如需詳細資訊,請參閱使用 IntelliSense

  • **語意顏色標示。**預設型別、列舉型別、巨集和其他 C++ 語彙基元現在有著色。 如需詳細資訊,請參閱在程式碼和文字編輯器中撰寫程式碼

  • **參考的反白顯示。**選取符號現在反白顯示該符號的所有執行個體在目前檔案中。 按 Ctrl+Shift+Up 箭號或 Ctrl+Shift+Down 箭號反白顯示參考之間移動。 您可以關閉這個功能已在 [選項] 對話方塊,在 [文字編輯器] 下, [C/C++], [進階]。

應用程式開發週期管理工具

Hh409293.collapse_all(zh-tw,VS.110).gif靜態程式碼分析

更新 C++ 的靜態分析提供更豐富的錯誤內容資訊、詳細分析規則和更好的分析結果。 在新的 [程式碼分析] 視窗,您可以使用關鍵字、專案和嚴重性篩選訊息。 當您選取視窗中的訊息,訊息觸發的程式碼行在程式碼編輯器中反白顯示。 對於某些 C++ 警告,訊息清單顯示的原始程式行導致警告的執行路徑;引數和原因採取特定路徑會反白顯示。

程式碼分析 Visual Studio 2012中的大部分版本中。 在 Professional、Premium 和 Ultimate 版本,所有規則都包含在內。 在 Windows 8 和 Windows 的 Express 版本中呼叫,最重要的警告都包含在內。 程式碼分析在網路的 Express 版本不包含。

這個其他程式碼分析加強功能:

  • 新的並行警告說明您可以保證避免並行 Bug 您在多執行緒的 C/C++ 程式使用正確的鎖定規則。 分析器偵測可能的競爭情形、鎖定順序顛倒,呼叫端/被呼叫端鎖定合約違規、不相符的同步處理作業和其他並行 Bug。

  • 您可以指定 C++ 規則使用 規則集,要套用到程式碼分析。

  • 在 [程式碼分析] 視窗中,您可以插入原始程式碼隱藏選取的警告的標記。

  • 您可以提高靜態程式碼分析的精確度和完整性使用它對其 Microsoft 原始程式碼附註語言 (SAL) 描述函式如何使用其參數,假設和確保的新版本完成時完成。

  • 支援位元 C++ 專案。

如需如何改善程式碼的品質的詳細資訊,請參閱 使用程式碼分析工具進行應用程式品質分析

Hh409293.collapse_all(zh-tw,VS.110).gif更新單元測試架構

使用新的 C++ 單元測試架構在 Visual Studio 撰寫 C++ 單元測試。 將新的單元測試專案加入至現有 C++ 方案透過找出 [C++ 單元測試專案] 範本的 [Visual C++] 分類底下 [新的專案] 對話方塊。 開始撰寫單元測試檔案中產生的 Unittest1.cppTEST_METHOD 程式碼 Stub。 當測試程式碼撰寫時,建立方案。 當您想要執行測試時,請選擇 [檢視] 以開啟 [單元測試總管] 視窗, [其他視窗], [單元測試總管]],然後,在您要的測試案例的捷徑功能表,選擇 [執行選取的測試]。 在測試回合完成後,您可以檢視測試結果和額外的堆疊追蹤資訊在同一個視窗中。 請參閱使用單元測試驗證程式碼針對 Windows 市集應用程式建立及執行單元測試

Hh409293.collapse_all(zh-tw,VS.110).gif結構相依性圖形

若要了解您的程式碼,您現在可以產生二進位、類別、命名空間和 Include 檔的相依性圖形在方案。 在功能表列上,依序選擇 [結構]、 [產生相依性圖形]、 [對於方案] 或 [對於包含檔。] 然後產生相依性圖形。 當圖表產生已完成時,您可以展開每個節點探索它,您可以移動學習相依關聯性在節點之間,並透過選擇捷徑功能表上的 [檢視內容。] 瀏覽原始程式碼的節點。 若要產生 Include 檔的相依性圖形, *.cpp 在原始程式碼檔或 *.h 標頭檔的捷徑功能表,選擇 [Include 檔產生圖形]。 請參閱 根據相依性圖形顯現程式碼相依性

Hh409293.collapse_all(zh-tw,VS.110).gif架構總管

使用架構總管,您可以探索在您的 C++ 方案、專案或檔案的屬性。 在功能表列上,選擇 [結構]],則 [視窗], [架構總管]。 您可以選取所需的節點,例如, [類別檢視]。 在此情況下,工具視窗的右邊展開與命名空間清單。 如果您選取了命名空間,新的資料列在這個命名空間中的類別、結構和列舉清單。 您可以繼續探索這些屬性,或是返回最左端的行開始另一個查詢。 請參閱 使用架構總管尋找程式碼

Hh409293.collapse_all(zh-tw,VS.110).gif程式碼涵蓋範圍

更新程式碼涵蓋範圍動態檢測二進位檔的執行階段。 這個降低組態負荷而且提供較佳的效能。 您可以從 C++ 應用程式的單元測試也會收集程式碼涵蓋範圍資料。 如需如何建立的詳細資訊和執行單元測試,檢視文件的單元測試架構部分。 當您建立 C++ 單元測試時,您可以使用 [單元測試總管] 尋找方案中的測試。 若要執行單元測試和收集程式碼涵蓋範圍資料的方式,在 [單元測試總管] 中,選取 [分析程式碼涵蓋範圍]。 您可以檢查 [程式碼涵蓋範圍結果] 中的程式碼涵蓋範圍結果視窗在功能表列上,選擇 [測試]],則 [視窗], [程式碼涵蓋範圍結果]。 請參閱 使用程式碼涵蓋範圍來決定所測試的程式碼數量

請參閱

概念

Visual Studio 2012 的新功能

其他資源

Visual C++ 團隊部落格

Visual C++ 在 Visual Studio 2012