[問題詳細資料] 視窗

[問題詳細資料] 視窗會顯示 MSVC 編譯器所發出的結構化診斷或 C/C++ 程式碼分析

選取 [錯誤清單] 視窗[詳細資料] 資料行中顯示圖示的項目,以開啟 [問題詳細資料] 視窗。 [問題詳細資料] 視窗會顯示所選項目的結構化診斷。

Screenshot of the Visual Studio Error List with one entry that has an icon in its details column.

Visual Studio [錯誤清單] 的螢幕擷取畫面。 它顯示一個具有單一資料列的表格。 該資料列描繪了一個編譯器錯誤並包含錯誤碼 C2665 (說明為 "pet: no overloaded function could convert all the argument types"),以及一個放大邊角的正方形圖示 (在名為 [詳細資料] 的資料行中)。 此圖示被反白顯示。

以下兩種情境會產生這些診斷:

  • 使用 MSBuild 和 MSVC 編譯器的 C++ 編譯可能會發出結構化診斷。
  • 支援關鍵事件資料的程式碼分析警告會發出結構化診斷。

請執行下列其中一項來開啟 [問題詳細資料] 視窗:

  • 當項目反白時,請將它按兩下或按 Enter 鍵。 使用 [工具>選項>文字編輯器>C/C++>進階>按兩下時顯示問題詳細資料] 來停用此行為。
  • 選取 [詳細資料] 資料行中的圖示。
  • 開啟項目的捷徑功能表,然後選取 [開啟問題詳細資料] 選項。

根據預設,[問題詳細資料] 視窗會在與 [錯誤清單] 視窗相同的位置開啟。 您可以將 [問題詳細資料] 視窗移至所需位置來變更其開啟的位置。

[問題詳細資料] 視窗會顯示可能被內嵌的結構化資訊。 當該視窗開啟時,所有具有內嵌子項的目項一開始是摺疊的狀態。

Screenshot of the Visual Studio Problem Details window with all children collapsed.

Visual Studio [問題詳細資料] 視窗的螢幕擷取畫面。 有一個標題顯示與前面的 [錯誤清單] 項目相同的錯誤碼和說明。 還有一個含有文字 cppcon-diag.cpp (Line 23) 的可選取的連結。 在此標題下方有幾個項目說明可能的多載是 void pet(cat)、void pet(dog) 或 void pet(_T0)。 最後一個項目指出 "while trying to match the argument list (lizard)"。 每一行的右邊是灰色的文字,顯示每個項目的檔案和行號。 它們全都屬於 cppcon-diag.cpp,而行號分別為 7、6、18 和 23。 前三個項目的左邊是指向右邊的小型空心箭頭,它表示這些項目可以展開,但目前未展開。

選取項目左邊的箭頭,或在項目反白時按,可以展開該項目來檢視其子項。

Screenshot of the Visual Studio Problem Details window with some children expanded.

Visual Studio [問題詳細資料] 視窗的螢幕擷取畫面。 內容大多與上一個螢幕擷取畫面相同,但是部分項目已展開,因此可以看到它們的子項目。 第一個項目已展開。 有一個含有文字 "void pet(cat) cannot convert argument 1 from lizard to cat" 的內嵌目項。 此項目縮排且可以展開。 前面的第二行已展開,顯示一個未展開的項目,寫著:"void pet(dog) cannot convert argument 1 from lizard to dog"。 第三個項目已展開,顯示一個項目,寫著:"the associated constraints are not satisfied"。 此項目有一個展開的子項,寫著:"the concept pettable lizard evaluated to false"。 此項目有兩個子項。 第一個是未展開的,並寫著:"the concept has_member_pet lizard evaluated to false"。 第二個是展開的,並寫著:"the concept has_default_pet lizard evaluated to false"。 第二個子項有兩個子項 (這兩個子項都無法展開)。 它們寫著:"is_pettable is not a member of lizard" 和 "see declaration of lizard"。

使用 [專案>屬性>進階>啟用 MSVC 結構化輸出] 選項,可以啟用或停用結構化診斷。 您可以建立 Directory.Build.props 檔案並將 UseStructuredOutput 屬性定義為 true 或 false 來影響數個專案。