共用方式為


Microsoft C/C++ 編譯器警告 C4600 到 C4799

本節中的文章說明 Microsoft C/C++ 編譯器警告訊息 C4600 到 C4799。

重要

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++ 說明與社群 (部分機器翻譯)。

警告訊息

警告 訊息
編譯器警告 (層級 1) C4600 #pragma 'macro name':需要一個有效的非空字串
編譯器警告 (層級 1) C4602 #pragma pop_macro:必須先將 'macro name' 的名稱傳遞至 #pragma push_macro,才能使用這個識別項
編譯器警告 (層級 1) C4603 'identifier':巨集未定義,或是定義在使用先行編譯標頭檔後變成不同
編譯器警告 (層級 1) C4604 'type':跨越原生與 Managed 界限傳遞引數值需要有效的複製建構函式。 否則不會定義執行階段行為
編譯器警告 (層級 1) C4605 目前的命令列上已指定 '/Dmacro',但在建置先行編譯標頭檔時沒有指定
編譯器警告 (層級 1) C4606 #pragma warning:已忽略 'warning number',因為 Code Analysis 警告不支援警告層級
編譯器警告 (層級 3) C4608 'union_member' 已由初始設定式清單中的等位成員 'union_member' 初始化
編譯器警告 (層級 3,錯誤) C4609 'type1' 衍生自類型 'type2' 的預設介面 'interface'。 針對 'type1' 使用不同的預設介面,或中斷基底/衍生關聯性。
編譯器警告 (層級 4) C4610 物件 'class' 將無法執行個體化 - 需要使用者定義的建構函式
編譯器警告 (層級 4) C4611 'function' 和 C++ 物件解構間的互動是不可攜的
編譯器警告 (層級 1) C4612 Include 檔檔名錯誤
編譯器警告 (層級 1) C4613 'symbol':無法變更區段類別
編譯器警告 (層級 1) C4615 #pragma warning:使用未知的使用者警告類型
編譯器警告 (層級 1) C4616 #pragma warning: 警告編號 'number' 不是有效的編譯器警告
編譯器警告 (層級 1) C4618 pragma 參數包含空白的字串; 已經忽略 pragma
編譯器警告 (層級 3) C4619 #pragma warning: 沒有警告編號 'number'
編譯器警告 (層級 1) C4620 找不到類型 'type' 後置格式的 'operator ++',已改用前置格式
編譯器警告 (層級 1) C4621 找不到類型 'type' 後置格式的 'operator --',已改用前置格式
編譯器警告 (層級 3) C4622 覆寫在目的檔中建立先行編譯標頭檔期間產生的偵錯資訊:'file'
編譯器警告 (層級 4) C4623 'derived class':預設建構函式已隱含定義為刪除,因為基底類別預設建構函式無法存取或已被刪除
編譯器警告 (層級 1) C4624 'derived class':解構函式已隱含定義為被刪除,因為基底類別解構函式無法存取或已遭刪除
編譯器警告 (層級 4) C4625 'derived class':複製建構函式已隱含定義為刪除,因為基底類別複製建構函式無法存取或已被刪除
編譯器警告 (層級 4) C4626 'derived class':指派運算子已隱含定義為刪除,因為基底類別指派運算子無法存取或已被刪除
編譯器警告 (層級 1) C4627 '<identifier>':尋找先行編譯標頭檔使用時略過
編譯器警告 (層級 1) C4628 不支援使用 -Ze 的雙拼詞。 字元順序 'digraph' 沒有解譯為 '%s' 的替代語彙基元 (Token)
編譯器警告 (層級 4) C4629 使用了雙拼詞,字元順序 'digraph' 被解譯為語彙基元 'char' (如果這不是您想要的,請在兩個字元之間插入一個空格)
編譯器警告 (層級 1) C4630 'symbol':'extern' 儲存體類別指定名稱在成員定義上不合法
編譯器警告 (層級 2) C4631 MSXML 或 XPath 無法使用,將不會處理 XML 文件註解。 reason
編譯器警告 (層級 1) C4632 XML 文件註解:檔案 - 存取遭拒:原因
編譯器警告 (層級 3) C4633 XML 文件註解目標:錯誤:原因
編譯器警告 (層級 4) C4634 XML 文件註解目標:無法套用:原因
編譯器警告 (層級 3) C4635 XML 文件註解目標: XML 格式錯誤: 原因
編譯器警告 (層級 3) C4636 套用至 'construct' 的 XML 文件註解:標記必須是非空白的 'attribute' 屬性。
編譯器警告 (層級 3 和層級 4) C4637 已捨棄 XML 文件註解目標:<include> 標記。 原因
編譯器警告 (層級 3) C4638 XML 文件註解目標:未知符號 'symbol' 的參考。
編譯器警告 (層級 4) C4639 MSXML 錯誤,將不會處理 XML 文件註解。 原因
編譯器警告 (層級 3) C4640 'instance': 區域靜態物件的建構不是安全執行緒
編譯器警告 (層級 3) C4641 XML 文件註解有模稜兩可的交互參考:
編譯器警告 (層級 1) C4642 'class':無法匯入泛型參數 'name' 的限制式
編譯器警告 (層級 4, 關閉) C4643 C++ Standard 不允許命名空間 std 中的出現向前宣告 'identifier'。
編譯器警告 (層級 1) C4644 在常數運算式中使用巨集形式的 offsetof 模式,並非標準用法; 請改用 C++ 標準程式庫中所定義的 offsetof
編譯器警告 (層級 3) C4645 使用 __declspec(noreturn) 宣告的函式有傳回的陳述式
編譯器警告 (層級 3) C4646 使用 __declspec(noreturn) 宣告的函式有非 void 的傳回類型
編譯器警告 (層級 3) C4647 行為變更: __is_pod(type) 在舊版本中具有不同值
編譯器警告 (層級 3) C4648 已忽略標準屬性 'carries_dependency'
編譯器警告 (層級 3) C4649 屬性在此內容中將予忽略
編譯器警告 (層級 1) C4650 在先行編譯標頭檔中找不到偵錯資訊; 只能使用來自標頭檔的全域符號
編譯器警告 (層級 1) C4651 已為先行編譯標頭檔指定 'definition',但不是用於目前的編譯
編譯器警告 (層級 1) C4652 編譯器選項 'option' 與先行編譯標頭檔不一致; 目前的命令列選項會覆寫先行編譯標頭檔中所定義的選項
編譯器警告 (層級 2) C4653 編譯器選項 'option' 與先行編譯標頭檔不一致; 已忽略目前的命令列選項,改用先行編譯標頭檔中指定的選項
編譯器警告 (層級 4) C4654 置於先行編譯標頭檔一行之前的程式碼將予忽略。 將程式碼新增至先行編譯標頭檔。
編譯器警告 (層級 1) C4655 'symbol':自上次組建之後變數類型有新的改變,或其他處有不同的定義
編譯器警告 (層級 1) C4656 'symbol':自上次組建之後資料類型有新增或改變,或其他處有不同的定義
編譯器警告 (層級 1) C4657 運算式包含自上次組建之後才新增的資料型
編譯器警告 (層級 1) C4658 'function':自上次組建之後函式原型有新的改變,或其他處有不同的宣告
編譯器警告 (層級 1) C4659 #pragma 'pragma':使用保留的區段 'segment' 有未定義的行為,使用 #pragma comment(linker, ...)
編譯器警告 (層級 1) C4661 'identifier':未提供明確樣板具現化 (Explicit Template Instantiation) 所要求的合適定義
編譯器警告 (層級 1) C4662 明確具現化 (Explicit Instantiation);樣板類別 'identifier1' 沒有特製化 'identifier2' 用的定義
編譯器警告 (層級 1) C4667 'function':沒有定義符合強制具現化 (instantiation) 的函式樣板
編譯器警告 (層級 4) C4668 'symbol' 未定義成前置處理器巨集,以 '0' 取代 'directive'
編譯器警告 (層級 1) C4669 'cast':不安全的轉換:'class' 為受控型別物件
編譯器警告 (層級 4) C4670 'identifier':此基底類別無法存取
編譯器警告 (層級 4) C4671 'identifier':無法存取複製建構函式
編譯器警告 (層級 4) C4672 'identifier1':模稜兩可。 第一個看到的當做 'identifier2'
編譯器警告 (層級 4) C4673 擲回 'identifier' 時,catch 無法辨識下列類型
編譯器警告 (層級 1) C4674 'method' 必須宣告為 'static',而且只能有一個參數
編譯器警告 (層級 4) C4676 '%s':無法存取解構函式
編譯器警告 (層級 1) C4677 'function':非私用成員的簽章含有組件私用類型 'private_type'
編譯器警告 (層級 1) C4678 基底類別 'base_type' 比 'derived_type' 更難以存取
編譯器警告 (層級 1) C4679 'member':無法匯入成員
編譯器警告 (層級 4) C4680 'class':coclass 未指定預設的介面
編譯器警告 (層級 4) C4681 'class':coclass 不指定為事件來源的預設介面
編譯器警告 (層級 4) C4682 'parameter':沒有指定方向參數屬性,預設為 [in]
編譯器警告 (層級 1) C4683 'function':事件來源有 'out' 參數; 當攔截多個事件處理常式時發出警告
編譯器警告 (層級 1) C4684 'attribute':警告!! 屬性可能造成無效的程式碼產生:請小心使用
編譯器警告 (層級 1) C4685 剖析樣板參數時需要 '>>',但卻找到 '>>'
編譯器警告 (層級 3) C4686 'user-defined type': 行為可能有變更,在 UDT 傳回呼叫慣例中發生變更
編譯器警告 (錯誤) C4687 'class':密封抽象類別不能實作介面 'interface'
編譯器警告 (層級 1) C4688 'constraint': 條件約束清單含有組件私用類型 'type',將無法由組件外部存取
編譯器警告 (層級 1) C4689 '%c':#pragma detect_mismatch 中不支援的字元; 已忽略 #pragma
編譯器警告 (層級 4) C4690 [ emitidl( pop ) ]:pop 多於 push
編譯器警告 (層級 1) C4691 'type':所參考的類型應該是在未參考的組件 'file' 中,已用目前編譯單位中定義的類型取代
編譯器警告 (層級 1) C4692 'function': 非私用成員的簽章含有組件私用原生類型 'native_type'
編譯器警告 (層級 1, 錯誤) C4693 'class':密封的抽象類別不能有任何執行個體成員 'instance member'
編譯器警告 (層級 1, 錯誤) C4694 'class_1':密封抽象類別不能有基底類別 'base_class'
編譯器警告 (層級 1) C4695 #pragma execution_character_set:'character set' 不是支援的引數:目前只支援 'UTF-8'
編譯器警告 (層級 1) C4696 /ZBvalue1 選項超出範圍;假設 'value2'
編譯器警告 (層級 3) C4698 'feature' 功能僅供評估之用,後續更新時可能會有所變更或移除。
編譯器警告 (層級 1 與層級 4) C4700 使用了未初始化的區域變數 'name'
編譯器警告 (層級 4) C4701 使用了可能未初始化的區域變數 'name'
編譯器警告 (層級 4) C4702 執行不到的程式碼
編譯器警告 (層級 4) C4703 已使用可能未初始化的本機指標變數 '%s'
編譯器警告 (層級 4) C4706 在條件運算式中使用指派運算子
編譯器警告 (層級 4) C4709 在陣列索引運算式中有逗號運算子;將使用最後一個逗號運算子後的值
編譯器警告 (層級 4) C4710 'function': 未內嵌函式
編譯器警告 (層級 1) C4711 函式 'function' 被指定為自動內嵌展開
編譯器警告 (層級 4) C4714 標記為 __forceinline 的函式 'function' 無法被內置
編譯器警告 (層級 1) C4715 'function':不是所有控制路徑都傳回值
編譯器警告 (層級 1, 錯誤) C4716 'function':必須傳回值
編譯器警告 (層級 1) C4717 'function':在所有控制路徑上遞迴,函式將導致執行階段堆疊溢位
編譯器警告 (層級 4) C4718 'function call': 遞迴呼叫沒有副作用,正在刪除
編譯器警告 (層級 1) C4719 指定 Qfast 時,找到雙精確度的常數 - 請使用 'f' 當做字尾以找到單精確度的常數
編譯器警告 (層級 2) C4720 內嵌組合語言報告: 'message'
編譯器警告 (層級 1) C4721 'function':無法當做內建使用
編譯器警告 (層級 1) C4722 'function':解構函式從未返回,可能有記憶體遺漏
編譯器警告 (層級 3) C4723 可能除以 0
編譯器警告 (層級 3) C4724 MOD 的模數可能為 0
編譯器警告 (層級 3) C4725 指令在一些 Pentium 上可能不正確
編譯器警告 C4726 ARM arch4/4T 僅支援 '<cpsr_f> 或具有即時運算值的 <spsr_f>'
編譯器警告 (層級 1) C4727 在 obj_file_1 和 obj_file_2 中找到時間戳記相同之名為 pch_file 的 PCH。 使用第一個 PCH。
編譯器警告 (層級 1) C4728 /Yl- 選項已忽略,因為 PCH 參考是必要項
編譯器警告 (層級 4) C4729 依據 flow graph 產生的警告,發現函式太大
編譯器警告 (層級 1) C4730 'main':混合 _m64 和浮點運算式可能導致不正確的程式碼
編譯器警告 (層級 1) C4731 'pointer':內嵌組譯程式碼已經修改框架指標暫存器 'register'
編譯器警告 (層級 1) C4732 內建 '%s' 在此架構中不支援
編譯器警告 (層級 1) C4733 內嵌 asm 指定給 'FS:0':處理常式沒有註冊為安全的處理常式
編譯器警告 C4734 COFF 偵錯資訊區段中有超過 64k 的行號,對模組 'module' 停止產生 COFF 偵錯行號
編譯器警告 C4735 align_function 屬性引數 'argument' 不是 2 的乘冪,且不是正數。 忽略屬性
編譯器警告 C4736 因為未指定 /Gy,所以已忽略 align_function 屬性
編譯器警告 (層級 3) C4738 在記憶體中儲存 32 位元浮點結果,可能會損失效能
編譯器警告 (層級 1) C4739 變數 'var' 的參考超過了它的儲存空間
編譯器警告 (層級 4) C4740 進出內嵌組譯程式碼的流程會隱藏全域最佳化
編譯器警告 (層級 1) C4742 'var' 在 'file1' 和 'file2' 中有不同的對齊:number 和 number
編譯器警告 (層級 1) C4743 'type' 在 'file1' 和 'file2' 中有不同的大小:number 和 number 位元組
編譯器警告 (層級 1) C4744 'var' 在 'file1' 和 'file2' 中有不同的類型:'type1' 和 'type2'
編譯器警告 C4745 由於大小所致,無法允許 'name' 的暫時性存取
編譯器警告 C4746 'expression' 的暫時性存取受限於 /volatile:<iso|ms> 設定;請考慮使用 __iso_volatile_load/store 內建函式
編譯器警告 (層級 1) C4747 呼叫受控 'entrypoint':受控碼不可在載入器鎖定下執行,包括 DLL 進入點和從 DLL 進入點到達的呼叫
編譯器警告 (層級 4) C4749 有條件地支援:offsetof 適用於非標準配置類型 'type'
編譯器警告 (層級 1) C4750 'identifier': 函式中有 _alloca() 內嵌成迴圈
編譯器警告 (層級 4) C4751 /arch:AVX 不適用於內嵌 ASM 中的 Intel(R) Streaming SIMD Extensions
編譯器警告 (層級 4) C4752 偵測到 Intel(R) Advanced Vector Extensions;請考慮使用適 /arch:AVX
編譯器警告 C4753 找不到指標的界限;已忽略 MPX 內建函式
編譯器警告 (層級 4) C4754 位於 %s(%d) 的比較中有算術運算的轉換規則,表示有一個分支無法執行到。 將 '%s' 轉換成 '%s' (或類似類型的 %d 位元組)。
編譯器警告 C4755 位於 %s(%d) 的比較中有算術運算的轉換規則,表示內置函式的一個分支無法執行到。 將 '%s' 轉換成 '%s' (或類似類型的 %d 位元組)。
編譯器警告 (層級 2) C4756 在常數算術中溢位
編譯器警告 (層級 4) C4757 註標是大型不帶正負號的值,您要使用負的常數?
編譯器警告 C4761 引數中的整數大小不相符;已提供轉換
編譯器警告 (層級 4) C4764 無法對齊超過 16 位元組的攔截物件
編譯器警告 (層級 4) C4767 區段名稱 '%s' 超過 8 個字元,將由連結器截斷
編譯器警告 (層級 3) C4768 已忽略連結規格之前的 __declspec 屬性
編譯器警告 (層級 4) C4770 部分驗證的列舉 'name' 做為索引
編譯器警告 C4771 必須使用簡單指標建立界限; 已忽略 MPX 內建函式
編譯器警告 (層級 1, 錯誤) C4772 #import 參考到的是在遺失類型程式庫中的類型;'missing_type' 是做為預留位置之用
編譯器警告 (層級 4) C4774 'string':引數 number 中的格式字串不得為字串常值
編譯器警告 (層級 3) C4775 格式字串 'string' (位於函式 'function' 中) 中使用了非標準擴充功能
編譯器警告 (層級 1) C4776 '%character' 不得在函式 'function' 的格式字串中使用
編譯器警告 (層級 4) C4777 'function':格式字串 'string' 需要類型 'type1' 的引數,但 variadic 引數 number 的類型為 'type2'
編譯器警告 (層級 3) C4778 'function':未結束的格式字串 'string'
編譯器警告 (層級 1) C4788 'identifier':識別項被截斷成 'number' 個字元
編譯器警告 (層級 1) C4789 大小 N 位元組的緩衝區 'identifier' 會溢位;將從位移 L 開始寫入 M 位元組
編譯器警告 (層級 2) C4792 使用 sysimport 宣告並從機器碼參考的函式 '%s'; 匯入程式庫需要連結
編譯器警告 (層級 1 與 3) C4793 'function': 函式會編譯成機器碼:'reason'
編譯器警告 (層級 1) C4794 執行緒本機存放區變數 '%s' 的區段已從 '%s' 變更為 '%s'
編譯器警告 C4798 針對使用例外狀況處理常式或回溯語意 (Unwind Semantics) 的 p-code 函式 'name' 產生的機器碼
編譯器警告 (層級 1) C4799 函式 'function' 沒有 EMMS 指令

另請參閱

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