共用方式為


Microsoft C/C++ 編譯器警告 C4800 到 C4999

本節中的文章說明 Microsoft C/C++ 編譯器警告訊息 C4800-C4999。

重要

Visual Studio 編譯器及建置工具可以報告許多類型的錯誤和警告。 發現錯誤或警告後,建置工具可能會假設程式碼意圖並嘗試繼續執行,以便可以同時報告更多問題。 如果工具做的假設有誤,那麼後來的錯誤或警告可能不適用於您的專案。 當您更正專案中的問題時,務必從所報告的第一個錯誤或警告開始進行。 一個修正程式可能會讓許多後續的錯誤消失。

若要取得 Visual Studio 中特定診斷訊息的說明,請在 [輸出] 視窗中選取該訊息,然後按下 F1 鍵。 如果存在,Visual Studio 會開啟該錯誤的文件頁面。 您也可以使用頁面頂端的搜尋工具來尋找有關特定錯誤或警告的文章。 或者,在此頁面上依照目錄中的工具和型別瀏覽錯誤與警告清單。

注意

並非每個 Visual Studio 錯誤或警告都有記載。 在許多情況下,診斷訊息會提供所有可用的資訊。 若您在使用 F1 時登陸此頁面,而且您認為錯誤或警告訊息需要額外的說明,請告訴我們。 您可以使用此頁面上的意見反應按鈕,在 GitHub 提出文件問題。 如果您認為錯誤或警告有誤,或發現工具組有其他問題,請在開發人員社群網站上回報產品問題。 您也可以傳送意見反應,並在 IDE 內輸入錯誤。 在 Visual Studio 中,移至功能表列,然後選擇 [說明] > [傳送意見反應] > [回報問題],或使用 [說明] > [傳送意見反應] > [傳送建議] 提交建議。 已建立某些編譯器錯誤主題,但編譯器未發出,現在會重新導向至此頁面。

您可以在 Microsoft Learn Q&A 論壇中找到針對錯誤和警告的其他協助。 或者,在 Visual Studio C++ 開發人員社群網站上搜尋錯誤或警告號碼。 您也可以搜尋 Stack Overflow 以尋找解決方案。

如需其他說明與社群資源的連結,請參閱 Visual C++ 說明與社群 (部分機器翻譯)。

警告訊息

警告 訊息
編譯器警告 (層級 4,關閉) C4800 從 'type' 隱含轉換為 bool。 可能遺失資訊
編譯器警告 C4801 藉傳址的傳回值無法驗證:message
編譯器警告 (層級 1) C4803 'method':raise 方法具有與事件 'event' 不同的儲存類別
編譯器警告 (層級 1) C4804 'operation':在作業中使用型別 'bool' 不安全
編譯器警告 (層級 1) C4805 'operation':在作業中混合型別 'type1' 與型別 'type2' 不安全
編譯器警告 (層級 1) C4806 'operation':不安全的作業:從型別 'type2' 提升至型別 'type1' 的值不能等於指定的常數
編譯器警告 (層級 1) C4807 'operation':混合型別 'type1' 與型別 'type2' 的正負號位元欄位不安全
編譯器警告 (層級 1) C4808 case 'value' 不是型別 'bool' switch 條件的有效值
編譯器警告 (層級 1) C4809 switch 陳述式有重複的 'default' 標籤;已提供所有可能的 'case' 標籤
編譯器警告 (層級 1) C4810 pragma pack(show) 的值 == n
編譯器警告 (層級 1) C4811 pragma conform(forScope, show) 的值 == value
編譯器警告 (層級 1) C4812 過時的宣告樣式:請改用 'new_syntax'
編譯器警告 (層級 1) C4813 'function':區域類別的 friend 函式必須先前已宣告
編譯器警告 (層級 4) C4815 'object name':堆疊物件中大小為零的陣列將沒有元素 (除非該物件是經過彙總初始化的彙總)
編譯器警告 (層級 4) C4816 'param':參數具有大小為零且將被截斷的陣列 (除非該物件是藉傳址方式傳遞)
編譯器警告 (層級 1) C4817 'member':以 '.' 存取這個成員的用法不合法;編譯器已使用 '->' 取代
編譯器警告 (層級 1) C4819 檔案包含無法在目前字碼頁 (數字) 中表示的字元。 請以 Unicode 格式儲存檔案,以防止資料遺失
編譯器警告 (層級 4,關閉) C4820 在建構 'member_name' 之後新增 'bytes' 位元組填補
編譯器警告 (層級 1) C4821 無法判斷 Unicode 編碼型別,請用簽章 (BOM) 儲存檔案
編譯器警告 (層級 1,關閉) C4822 'member function':區域類別成員函式沒有主體
編譯器警告 (層級 3) C4823 'function':使用釘選指標,但未啟用回溯語意。 請考慮使用 /EHa
編譯器警告 (層級 2,關閉) C4826 從 'type1' 到 'type2' 的轉換是帶符號的延伸。 這可能會造成未預期的執行階段行為。
編譯器警告 (層級 3) C4827 具有 0 個參數的公用 'ToString' 方法應標記為 virtualoverride
編譯器警告 (層級 1) C4828 檔案包含從位移 0x HexOffset 開始的字元,在目前的來源字元集 (字碼頁 codepage) 中不是合法的字元。
編譯器警告 (層級 1) C4829 函式 main 的參數可能不正確。 請考慮 'int main(Platform::Array<Platform::String^>^ argv)'
編譯器警告 (層級 1) C4834 正在捨棄具有 'nodiscard' 屬性之函式的傳回值
編譯器警告 (層級 1) C4835 'variable':在主機組件中第一次執行受控程式碼後,才會執行匯出資料的初始設定式
編譯器警告 (層級 4,關閉) C4837 偵測到三併詞:'??character' 已取代為 'character'
編譯器警告 (層級 1) C4838 從 'type_1' 到 'type_2' 的轉換必須是縮小轉換
編譯器警告 (層級 3) C4839 使用類別 'type' 作為可變參數函式的引數不是標準的用法
編譯器警告 (層級 4) C4840 使用類別 'type' 作為可變參數函式的引數不是可攜的用法
編譯器警告 (層級 4,關閉) C4841 已使用非標準延伸模組:offsetof 中使用的複合成員指示項
編譯器警告 (層級 4,關閉) C4842 套用至使用多重繼承之型別的 'offsetof' 結果在編譯器版本之間不保證一致
編譯器警告 (層級 4) C4843 'type1':無法連線到陣列或函式型別的參考例外處理常式,請改用 'type2'
編譯器警告 (層級 1) C4844 'export module module_name;' 是現在用於宣告模組介面的慣用語法
編譯器警告 (層級 4) C4845 如果未在命令列上指定 '/d1initall[0|1|2|3]',則會忽略 '__declspec(no_init_all)'
編譯器警告 (層級 4) C4846 'value' 不是 '/d1initall' 的有效引數:已忽略命令列旗標
編譯器警告 (層級 4) C4847 '__declspec(no_init_all) ' 只能套用至函式、類別型別或區域變數:已忽略
編譯器警告 (層級 1) C4848 針對 C++17 及更早版本中之標準屬性 'no_unique_address' 的支援是廠商延伸模組
編譯器警告 (層級 1) C4849 已在 'directive' 指示詞中忽略 OpenMP 'clause' 子句
編譯器警告 (層級 1, 錯誤) C4854 參考的繫結取值 null 指標具有未定義的行為
編譯器警告 (層級 1,關閉) C4855 'this' 透過 '[=]' 的隱含擷取在 'version' 中已被取代
編譯器警告 (層級 4) C4856 'value' 不是 '/d1initAll:FillPattern' 的有效引數 (值必須介於 0 到 255 之間)。 已忽略命令列旗標
編譯器警告 (層級 1) C4857 C++/CLI 模式不支援比 C++17 還新的 C++ 版本;正在將語言設定為 /std:c++17
編譯器警告 (層級 1) C4858 正在捨棄傳回值:function name
編譯器警告 (層級 4) C4859 'value' 不是 '/presetWarn' 的有效引數:它必須是 > 0 的十進位值。 已忽略命令列旗標
編譯器警告 (層級 4) C4860 'object name':編譯器已將 'number' 位元組的儲存體進行零初始化
編譯器警告 (層級 4) C4861 編譯器已將 'number' 位元組的儲存體進行零初始化
編譯器警告 (層級 4) C4866 編譯器可能不會針對 operator_name 的呼叫強制執行由左到右的評估順序
編譯器警告 (層級 1, 錯誤) C4867 'function':函式呼叫遺漏引數清單;請使用 'call' 建立成員的指標
編譯器警告 (層級 4) C4868 'file(line_number)' 編譯器可能不會在以大括號括住的初始化清單中強制執行由左到右的評估順序
編譯器警告 (層級 3) C4869 nodiscard 只能套用至類別、列舉及函式
編譯器警告 (層級 2) C4872 在編譯 concurrency::parallel_for_each 的呼叫歷程圖時,偵測到浮點除數為零:'location'
編譯器警告 (層級 1) C4880 正在從 'const type_1' 強制型轉為 'type_2':從指標或參考中強制型轉常數性,可能會導致在 amp 限制函式中產生未定義的行為
編譯器警告 (層級 4) C4881 建構函式和/或解構函式將不會針對 tile_static 變數 'variable-name' 叫用
編譯器警告 (層級 1) C4882 將具有非常數呼叫運算子的函子傳遞給 concurrency::parallel_for_each 已被取代
編譯器警告 C4883 'function name':函式大小讓最佳化無法進行
編譯器警告 C4900 在 'tool1' 版本 'version1' 與 'tool2' 版本 'version2' 之間的 Il 不相符
編譯器警告 (層級 1,關閉) C4905 寬字串常值強制型轉為 'LPSTR'
編譯器警告 (層級 1,關閉) C4906 字串常值強制型轉為 'LPWSTR'
編譯器警告 (錯誤) C4907 無法指定多個呼叫慣例;將會使用最後指定的呼叫慣例
編譯器警告 (層級 1) C4910 '<identifier>':'__declspec(dllexport)' 與 'extern' 在明確具現化中不相容
編譯器警告 (層級 1) C4912 'attribute':屬性在巢狀 UDT 上有未定義的行為
編譯器警告 (層級 4) C4913 使用者定義的二元運算子 ',' 存在,但沒有多載可以轉換所有的運算元,已使用預設的內建二元運算子 ','
編譯器警告 (層級 1) C4916 為了有 dispid,'description':必須由介面引進
編譯器警告 (層級 1,關閉) C4917 'declarator':GUID 僅能與類別、介面或命名空間產生關聯
編譯器警告 (層級 4) C4918 'character':在 pragma 最佳化清單中的無效字元
編譯器警告 (層級 1) C4920 列舉 enum-name 成員 member_1=value_1 已在列舉 enum-name 中被視為 member_2=value_2
編譯器警告 (層級 3) C4921 'description':不應多次指定屬性值 'attribute'
編譯器警告 (層級 1) C4925 'method':無法從指令碼呼叫 dispinterface 方法
編譯器警告 (層級 1) C4926 'identifier':已定義符號;已忽略屬性
編譯器警告 (層級 1) C4927 不合法的轉換;已隱含套用一個以上的使用者定義的轉換
編譯器警告 (層級 1,關閉) C4928 不合法的 copy-initialization; 已經隱含套用一個以上的使用者定義的轉換
編譯器警告 (層級 1) C4929 'file':型別程式庫包含一個集合聯集;忽略 'embedded_idl' 限定詞
編譯器警告 (層級 1) C4930 'prototype':未呼叫原型函式 (是否打算使用變數定義?)
編譯器警告 (層級 4,關閉) C4931 我們假設型別程式庫是針對 number 位元指標所建置
編譯器警告 (層級 4) C4932 無法分辨 __identifier(identifier)__identifier(identifier)
編譯器警告 (層級 1) C4934 '__delegate(multicast)' 已被取代,請改用 '__delegate'
編譯器警告 (層級 1) C4935 從 'access' 修改的組件存取指定名稱
編譯器警告 (層級 1,錯誤) C4936 只有在使用 /clr/clr:pure 編譯時,才支援此__declspec
編譯器警告 (層級 4) C4937 無法分辨 'text1' 和 'text2' 是否為 'directive' 的引數
編譯器警告 (層級 4) C4938 'var':浮點數削減變數在 /fp:strict#pragma fenv_access 之下可能會造成不一致的結果
編譯器警告 C4939 #pragma vtordisp 已被取代,在未來的 Visual C++ 發行版本中將會移除
編譯器警告 (層級 1) C4944 'symbol':無法從 'assembly1' 匯入符號:因為 'symbol' 已存在於目前的範圍中
編譯器警告 (層級 1) C4945 'symbol':無法從 'assembly1 匯入符號 ':因為 'symbol' 已從另一個組件 'assembly2' 匯入
編譯器警告 (層級 1,關閉) C4946 在相關類別之間使用的 reinterpret_cast:'class1' 和 'class2'
編譯器警告 (層級 1) C4947 'type_or_member':標記為過時
編譯器警告 (層級 2) C4948 'accessor' 的傳回型別不符合對應 setter 的最後一個參數型別
編譯器警告 (層級 1 與層級 4) C4949 pragma 'managed' 和 'unmanaged' 只有在使用 '/clr[:option]' 編譯時才有意義
編譯器警告 (層級 1,錯誤) C4950 'type_or_member':標記為過時
編譯器警告 (層級 1) C4951 由於已收集設定檔資料,因此已編輯 'function',但未使用函式設定檔資料
編譯器警告 (層級 1) C4952 'function':在程式資料庫 'pgd_file' 中找不到設定檔資料
編譯器警告 (層級 1) C4953 由於已收集設定檔資料,因此已編輯內嵌項 'function',但未使用設定檔資料
編譯器警告 C4954 'function':未設定 (包含 __int64 參數運算式)
編譯器警告 C4955 'import2':已忽略匯入;已從 'import1' 匯入
編譯器警告 (層級 1,錯誤) C4956 'type':無法驗證此型別
編譯器警告 (層級 1,錯誤) C4957 'cast':無法驗證從 'cast_from' 明確強制型轉為 'cast_to'
編譯器警告 (層級 1,錯誤) C4958 'operation':無法驗證指標算術
編譯器警告 (層級 1,錯誤) C4959 無法在 /clr:safe 中定義非受控型別 'type',因為存取它的成員會產生無法驗證的程式碼
編譯器警告 (層級 4) C4960 'function' 太大而無法分析
編譯器警告 (層級 1) C4961 沒有任何設定檔資料合併到 'pgd-file',特性指引最佳化已停用
編譯器警告 (層級 4,關閉) C4962 'function':特性指引最佳化已停用,因為最佳化已導致設定檔資料變得不一致
編譯器警告 (層級 1) C4963 'description':找不到任何設定檔資料;在檢測組建中使用了不同的編譯器選項
編譯器警告 (層級 1) C4964 未指定最佳化選項;將不會收集設定檔資訊
編譯器警告 (層級 1) C4965 對整數 0 進行隱含式 box 處理;請使用 nullptr 或明確強制型轉
編譯器警告 (層級 1) C4966 'function' 的 __code_seg 註釋含有不支援的區段名稱,已忽略註釋
編譯器警告 C4970 委派建構函式:由於 'type' 為靜態,因此已忽略目標物件
編譯器警告 (層級 1) C4971 引數順序:委派建構函式的 <target object>、<target function> 已被取代,請使用 <target function>、<target object="">
編譯器警告 (層級 1,錯誤) C4972 直接修改或將 Unbox 作業的結果視為左值,將無法驗證
編譯器警告 (層級 1) C4973 'symbol':標記為已被取代
編譯器警告 (層級 1) C4974 'symbol':標記為已被取代
編譯器警告 (層級 1) C4975 已忽略形式參數 'parameter' 的 modopt '[modifier]'
編譯器警告 (層級 1) C4976 '/W' 的值 'value' 無效;假設為 '1'
編譯器警告 (層級 3) C4981 Warbird:標記為 __forceinline 的函式 'function' 未內嵌,因為它包含例外狀況語意
編譯器警告 (層級 3) C4983 已忽略 '/analyze:sarif:hashname',因為 '/analyze:log' 的引數是單一檔案而非目錄
編譯器警告 C4984 'if constexpr' 是 C++17 語言延伸模組
編譯器警告 (層級 4) C4985 'symbol name':先前的宣告中沒有的屬性。
編譯器警告 (層級 4,關閉) C4986 'declaration':例外狀況規格與先前的宣告不符
編譯器警告 (層級 4,關閉) C4987 使用的非標準延伸模組:'throw (...)'
編譯器警告 (層級 4,關閉) C4988 'variable':變數已在類別/函式範圍外宣告
編譯器警告 (層級 4) C4989 'type':型別具有衝突的定義。
編譯器警告 (層級 3) C4990 Warbird:message
編譯器警告 (層級 3) C4991 Warbird:標記為 __forceinline 的函式 'function' 未內嵌,因為內嵌項的保護層級大於父代
編譯器警告 (層級 3) C4992 Warbird:標記為 __forceinline 的函式 'function-name' 未內嵌,因為它包含無法保護的內嵌組件
編譯器警告 (層級 3) C4995 'function':已將名稱標記為 #pragma 已被取代
編譯器警告 (層級 3) C4996 'deprecated-declaration':deprecation-message (或 “宣告為已被取代”)
編譯器警告 (層級 1) C4997 'class':coclass 未實作 COM 介面或虛擬介面
編譯器警告 (層級 1) C4998 期望失敗:expectation (value)

另請參閱

C/C++ 編譯器與建置工具錯誤與警告 (部分機器翻譯)
編譯器警告 C4000 到 C5999