Microsoft C/C++ 編譯器警告 C4000 到 C4199
本節中的文章說明 Microsoft C/C++ 編譯器警告訊息 C4000 到 C4199。
重要
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,不再發出) C4001 | 使用了非標準延伸模組 'single line comment' |
編譯器警告 (層級 1,錯誤) C4002 | 類似函式的巨集引動過程 'identifier' 有太多引數 |
編譯器警告 (層級 1,錯誤) C4003 | 類似函式的巨集引動過程 'identifier' 沒有足夠的引數 |
編譯器警告 (層級 1) C4005 | 'identifier': 巨集重複定義 |
編譯器警告 (層級 1) C4006 | #undef 必須是識別項 |
編譯器警告 (層級 3) C4007 | 'function': 必須是 'attribute' |
編譯器警告 (層級 3) C4008 | 'function': 忽略了 'attribute' 屬性 |
編譯器警告 (層級 1) C4010 | 單行註解包含行接續字元 |
編譯器警告 (層級 3) C4013 | 'function' 未定義; 假設 extern 傳回整數 |
編譯器警告 (層級 1) C4015 | 'identifier': 位元欄位的類型必須為整數 |
編譯器警告 (層級 3) C4018 | 'expression': signed/unsigned 不相符 |
編譯器警告 (層級 4) C4019 | 在全域範圍有空的陳述式 |
編譯器警告 (層級 1) C4020 | 'function': 實質參數太多 |
編譯器警告 (層級 1) C4022 | 'function': 實質參數 'parameter_number' 的指標不符 |
編譯器警告 (層級 1) C4023 | 'function': 基底指標傳遞至沒有原型的函式: 參數 'parameter_number' |
編譯器警告 (層級 1) C4024 | 'function': 型式和實質參數 'parameter_number' 的類型不同 |
編譯器警告 (層級 1) C4025 | 'function': 基底指標傳遞至擁有變數引數的函式: 參數 'parameter_number' |
編譯器警告 (層級 1) C4026 | 宣告有型式參數清單的函式 |
編譯器警告 (層級 1) C4027 | 宣告沒有型式參數清單的函式 |
編譯器警告 (層級 1) C4028 | 型式參數 parameter_number 與宣告不同 |
編譯器警告 (層級 1) C4029 | 在函式宣告和函式定義中的型式參數清單不同 |
編譯器警告 (層級 1) C4030 | 第一型式參數清單比第二清單長 |
編譯器警告 (層級 1) C4031 | 第二型式參數清單比第一清單長 |
編譯器警告 (層級 4) C4032 | 升級時型式參數 parameter_number 具有不同的類型 |
編譯器警告 (層級 1) C4033 | 'function' 必須傳回值 |
編譯器警告 (層級 1) C4034 | sizeof 傳回 0 |
編譯器警告 (層級 3) C4035 | 'function': 沒有傳回值 |
編譯器警告 (層級 1) C4036 | 未命名的 'type' 當做實質參數 |
編譯器警告 (層級 1) C4038 | 'modifier': 不合法的類別修飾元 |
編譯器警告 (層級 1) C4041 | 編譯器限制: 瀏覽器資訊超出編譯器上限,已終止輸出 |
編譯器警告 (層級 1) C4042 | 'identifier': 有錯誤的儲存類別 |
編譯器警告 (層級 1) C4045 | 'array': 陣列界限溢位 |
編譯器警告 (層級 1) C4047 | 'operator': 'identifier1' 在間接層級中不同於 'identifier2' |
編譯器警告 (層級 1) C4048 | 下列陣列註標彼此不同: 'identifier1' 和 'identifier2' |
編譯器警告 (層級 1) C4049 | 編譯器限制: 程式碼行數超過上限,已終止發出行號 |
編譯器警告 (層級 1) C4051 | 轉換類型,可能導致資料遺失 |
編譯器警告 (層級 1 和層級 4) C4052 | 函式宣告不同; 一個包含變數引數 |
編譯器警告 (層級 4) C4053 | '?: ' 有一類型為 void 的運算元 |
編譯器警告 (層級 1) C4055 | 'conversion': 從資料指標 'type1' 到函式指標 'type2' |
編譯器警告 (層 2) C4056 | 在浮點常數算術中溢位 |
編譯器警告 (層級 4) C4057 | 'operator': 'identifier1' 在間接取值上與 'identifier2' 的基底類型有些許不同 |
編譯器警告 (層級 3,關閉) C4060 | switch 陳述式沒有包含 'case' 或 'default' 標籤 |
編譯器警告 (層級 4,關閉) C4061 | 在 enum 'enumeration' 的 switch 中,case 標籤並未明確處理列舉程式 'identifier' |
編譯器警告 (層級 4,關閉) C4062 | 在 enum 'enumeration' 的 switch 中未處理列舉程式 'identifier' |
編譯器警告 (層級 4) C4063 | case 'identifier' 不是 enum 'enumeration' switch 的有效值 |
編譯器警告 (層級 4) C4064 | 不完整 enum 'enumeration' 的 switch |
編譯器警告 (層級 3,關閉) C4065 | switch 陳述式包含 'default ',但沒有 'case ' 標籤 |
編譯器警告 (層級 3) C4066 | 忽略超出寬字元常數中第一個的字元 |
編譯器警告 (層級 1) C4067 | 未預期的語彙基元,接著前置處理器指示詞 - 必須是新行 |
編譯器警告 (層級 1) C4068 | 未知的 pragma 'identifier' |
編譯器警告 C4069 | 長雙精度浮點數與l雙精度浮點數的精確度相同 |
編譯器警告 (層級 3) C4073 | 初始設定式置於程式庫初始化區域 |
編譯器警告 (層級 1) C4074 | 初始設定式置於編譯器保留的初始化區域 |
編譯器警告 (層級 1) C4075 | 初始設定式置於無法辨識的初始化區域 |
編譯器警告 (層級 1) C4076 | 'type_modifier': 無法與類型 'typename' 搭配使用 |
編譯器警告 (層級 1) C4077 | 未知的 check_stack 選項 |
編譯器警告 (層級 1) C4079 | 未預期的語彙基元 'token' |
編譯器警告 (層級 1) C4080 | 必須是區段名稱的識別項,但卻找到 'symbol' |
編譯器警告 (層級 1) C4081 | 必須是 'token1'; 但找到 'token2' |
編譯器警告 (層級 1) C4083 | 必須是 'token'; 但找到識別項 'identifier' |
編譯器警告 (層級 1) C4085 | pragma 參數必須為 'on ' 或 'off ' |
編譯器警告 (層級 1) C4086 | pragma 參數必須為 '1'、'2'、'4'、'8' 或 '16' |
編譯器警告 (層級 1) C4087 | 'function': 搭配 'void ' 參數清單宣告 |
編譯器警告 (層級 1) C4088 | 'function': 指標與實質參數 'parameter_number' 中的不相符,型式參數 'parameter_number' |
編譯器警告 (層級 1) C4089 | 'function': 類型與實質參數 'parameter_number' 中的不同,型式參數 'parameter_number' |
編譯器警告 (層級 1) C4090 | 'operation': 不同的 'modifier' 限定詞 |
編譯器警告 (層級 1 和層級 2) C4091 | 'keyword': 當沒有宣告變數時,忽略 'type' 的左方 |
編譯器警告 (層級 4) C4092 | sizeof 傳回 'unsigned long' |
編譯器警告 (層級 2) C4094 | 未標記的 'token' 宣告沒有符號 |
編譯器警告 (層級 1) C4096 | 'identifier': 介面不是 COM 介面; 不會將其發出到 IDL |
編譯器警告 (層級 1) C4097 | pragma 參數必須為 'restore ' 或 'off ' |
編譯器警告 (層級 1) C4098 | 'function': 'void ' 函式正在傳回值 |
編譯器警告 (層級 2) C4099 | 'identifier': 類型名稱之前使用 'object_type1',現在發現使用 'object_type2' |
編譯器警告 (層級 4) C4100 | 'identifier': 未參考的型式參數 |
編譯器警告 (層級 3 和層級 4) C4101 | 'identifier':未參考的區域變數 |
編譯器警告 (層級 3) C4102 | 'label': 未參考的標籤 |
編譯器警告 (層級 1) C4103 | 對齊在加入標頭之後有所變更,可能是因為缺少 #pragma pack(pop) 所致 |
編譯器警告 (層級 1) C4109 | 未預期的識別項 'identifier' |
編譯器警告 (層級 1 和層級 4) C4112 | #line 必須有介於 1 和 'line_count' 間的整數 |
編譯器警告 (層級 1) C4113 | 'identifier1' 與來自 'identifier2' 的參數清單不同 |
編譯器警告 (層級 1) C4114 | 相同類型的限定詞已經使用多次 |
編譯器警告 (層級 1 和層級 4) C4115 | 'type': 括弧中未命名類型的定義 |
編譯器警告 (層級 1) C4116 | 括號運算式中定義了未命名的類型 |
編譯器警告 (層級 1) C4117 | 巨集名稱 'name' 為保留字; 忽略 'Command' |
編譯器警告 (層級 1) C4119 | 指定的基底 'base1' 和 'base2' 不同 |
編譯器警告 (層級 1) C4120 | 兩者分別為基底與非基底,無法轉換 |
編譯器警告 (層級 4) C4121 | 'symbol': 成員的記憶體對齊受 pack 影響 |
編譯器警告 (層級 1) C4122 | 'function': alloc_text 僅適用使用 C 連結的函式 |
編譯器警告 (層級 1) C4123 | 指定不同的基底運算式 |
編譯器警告 (層級 1) C4124 | __fastcall 與堆疊檢查並用會降低執行效能 |
編譯器警告 (層級 4) C4125 | 八進位逸出序列結尾有十進位數字 |
編譯器警告 (層級 4) C4127 | 條件運算式是常數 |
編譯器警告 (層級 1) C4129 | 'character': 無法辨識的字元逸出序列 |
編譯器警告 (層級 4) C4130 | 'operator': 以字串常數的位址進行邏輯運算 |
編譯器警告 (層級 4) C4131 | 'function': 使用舊樣式的宣告子 |
編譯器警告 (層級 4) C4132 | 'object': 應初始化 const 物件 |
編譯器警告 (層級 1 和層級 3) C4133 | 'expression':不相容的類型 - 從 'type1' 到 'type2' |
編譯器警告 C4137 | 'function': 沒有來自浮點函式的傳回值 |
編譯器警告 (層級 1) C4138 | 在註解外部找到 '*/ ' |
編譯器警告 (層級 1,錯誤) C4141 | 'modifier':使用了一次以上 |
編譯器警告 (層級 1) C4142 | 'identifier': 良性的類型重複定義 |
編譯器警告 (層級 1) C4143 | pragma 'same_seg' 不支援; 使用 __based 配置 |
編譯器警告 (層級 1) C4144 | 'expression': 關聯運算式做為 switch 運算式 |
編譯器警告 (層級 1) C4145 | 'expression1': 關聯運算式做為 switch 運算式; 可能與 'expression2' 混淆 |
編譯器警告 (層級 2) C4146 | 一元減號運算子套用 unsigned 類型,所得的結果也會是 unsigned 類型 |
編譯器警告 (層級 2) C4150 | 刪除指向不完整類型 'type' 的指標; 沒有解構函式可呼叫 |
編譯器警告 (層級 4) C4152 | 非標準的擴充,運算式中函式/資料的指標轉換 |
編譯器警告 (層級 1) C4153 | 運算式中函式/資料的指標轉換 |
編譯器警告 (層級 1) C4154 | 不能在陣列運算式上使用 delete; 所以將陣列轉換成指標 |
編譯器警告 (層級 1) C4155 | 刪除陣列運算式沒有使用陣列形式的 'delete' |
編譯器警告 (層級 2) C4156 | 刪除陣列運算式沒有使用陣列形式的 'delete'; 改用陣列形式 |
編譯器警告 (層級 1) C4157 | C 編譯器忽略 pragma |
編譯器警告 (層級 1) C4158 | 假設為 #pragma pointers_to_members(full_generality, 'inheritance_type') |
編譯器警告 (層級 3) C4159 | #pragma 'pragma'(pop,...) : 已經推出 (pop) 先前推入 (push) 的識別項 'identifier' |
編譯器警告 (層級 1) C4160 | #pragma 'pragma'(pop,...) : 未發現先前推入的識別項 'identifier' |
編譯器警告 (層級 3) C4161 | #pragma 'pragma'(pop...) : pop 的數目必須和 push 相同,否則可能導致非預期的行為 |
編譯器警告 (層級 1) C4162 | 'identifier': 找不到使用 C 連結的函式 |
編譯器警告 (層級 1) C4163 | 'identifier': 無法當做內建函式使用 |
編譯器警告 (層級 1) C4164 | function': 內建函式未宣告 |
編譯器警告 (層級 3, 關閉) C4165 | 'HRESULT ' 將會轉換為 'bool '; 您確定這是您要的? |
編譯器警告 (層級 1) C4166 | 對建構函式/解構函式的不合法呼叫慣例 |
編譯器警告 (層級 1) C4167 | 'function': 僅供用為內建函式 |
編譯器警告 (層級 1) C4168 | 編譯器限制: 偵錯工具類型不足,必須刪除程式資料庫 'database' 並重新建置 |
編譯器警告 (層級 1) C4172 | 傳回區域變數或暫存 optional_context 的位址 |
編譯器警告 (層級 1) C4174 | 'name': 無法當做 #pragma component 使用 |
編譯器警告 (層級 1) C4175 | #pragma component(browser, on) : 瀏覽器資訊一開始必須在命令行上指定 |
編譯器警告 (層級 1) C4176 | 'subcomponent': #pragma component 瀏覽器的未知子元件 |
編譯器警告 (層級 1) C4177 | #pragma 'pragma' 只能使用於全域範圍或命名空間範圍 |
編譯器警告 (層級 1) C4178 | 對 switch 運算式的類型而言,case 常數 'constant' 太大 |
編譯器警告 (層級 4,不再發出) C4179 | 將 '//* ': 剖析為 '/ ' 和 '/\* ': 與標準的 '// ' 註解混淆 |
編譯器警告 (層級 1) C4180 | 套用至函式類型的限定詞沒有意義; 已忽略 |
編譯器警告 C4181 | 套用至參考類型的限定詞; 已忽略 |
編譯器警告 (層級 1) C4182 | #include 具有 nest_count 層的巢狀層次,可能會造成無限遞迴 |
編譯器警告 (層級 1) C4183 | 'identifier': 遺漏傳回類型; 假設是傳回 'int ' 的成員函式 |
編譯器警告 (層級 1) C4185 | 忽略未知的 #import 屬性 'attribute' |
編譯器警告 (層級 1) C4186 | # import 屬性 'attribute' 需要 'argument_count' 引數; 己忽略 |
編譯器警告 (層級 1) C4187 | #import 屬性 'attribute1' 和 'attribute2' 不相容; 兩者都已忽略 |
編譯器警告 (層級 1) C4188 | 常數運算式不是整數,不能在這裡使用 |
編譯器警告 (層級 3 和層級 4) C4189 | 'identifier': 已初始化區域變數,但並未參考 |
編譯器警告 (層級 1) C4190 | 'identifier1' 已指定 C-連結,但傳回與 C 不相容的 UDT 'identifier2' |
編譯器警告 (層級 3,關閉) C4191 | 'operation':從 'type_of_expression' 到 'type_required' 不安全的轉換 使用結果指標進行函式呼叫可能會導致程式失敗 |
編譯器警告 (層級 3) C4192 | 自動排除 'identifier' (於匯入類型程式庫 'library' 時) |
編譯器警告 (層級 3) C4193 | #pragma warning(pop) : 沒有相符的 '#pragma warning(push) ' |
編譯器警告 (層級 1) C4194 | 無法巢狀化 #pragma start_map_region ; 已忽略 |
編譯器警告 (層級 1) C4195 | 使用 #pragma stop_map_region 但沒有對應的 #pragma start_map_region ; 已忽略 |
編譯器警告 (層級 1) C4196 | 必須是 'token1' 或 'token2'; 但找到 'token3' |
編譯器警告 (層級 3) C4197 | 'type': 略過類型轉換中最上層的 volatile 類型 |
編譯器警告 (層級 1、層級 2、層級 3 和層級 4) C4199 | message |
另請參閱
C/C++ 編譯器與建置工具錯誤與警告 (部分機器翻譯)
編譯器警告 C4000 到 C5999