Share via


預設為關閉的編譯器警告

編譯器包含預設為關閉的警告,因為大多數的使用者不想看到它們。 不過,您可以使用下列其中一個選項啟用這類警告。

  • #pragma warning(default : warning_number )
    指定的警告 (warning_number) 會在其預設層級上啟用。 警告的文件包含警告的預設層級。

  • #pragma warning( warning_level : warning_number )
    指定的警告 (warning_number) 會在指定的層級 (warning_level) 上啟用。

  • /Wall
    /Wall 會啟用所有預設停用的警告。

根據預設,下列警告會關閉。

C4061 (層級 4)

在列舉 'enumeration' 的 switch 中,case 標籤並未明確處理列舉值 'identifier'

C4062 (層級 3)

在列舉 'enumeration' 的 switch 中未明確處理列舉值 'identifier'

C4191 (層級 3)

'operator/operation': 從 'type of expression' 到 'type required' 不安全的轉換

C4242 (層級 4)

'identifier': 將 'type1' 轉換為 'type2',資料可能遺失

C4254 (層級 4)

'operator': 將 'type1' 轉換為 'type2',資料可能遺失

C4255 (層級 4)

'function': 未提供函式原型:將 '()' 轉換為 '(void)'

C4263 (層級 4)

'function': 成員函式不覆寫任何基底類別虛擬成員的函式

C4264 (層級 1)

'virtual_function': 基底類別 'class' 的虛擬成員函式沒有覆寫; 函式已隱藏

C4265 (層級 3)

'class': 類別有虛擬函式,但解構函式不是虛擬的

C4266 (層級 4)

'function': 基底類別 'type' 的虛擬成員函式沒有覆寫; 函式已隱藏

C4287 (層級 3)

'operator': 不帶正負號/負常數不相符

C4289 (層級 4)

使用非標準的擴充:'var' : 在 for-loop 範圍外使用 for-loop 中所宣告的迴圈控制變數

C4296 (層級 4)

'operator': 運算式永遠是 false

C4302 (層級 2)

'conversion': 從 'type1' 到 'type2' 發生截斷狀況

C4311 (層級 1)

'variable' : 指標從 'type' 到 'type' 截斷

C4312 (層級 1)

'operation' : 將 'type1' 轉換為較大的 'type2'

C4339 (層級 4)

'type' : 偵測到在 CLR 中繼資料中使用未定義的類型 - 使用此類型可能造成執行階段例外狀況

C4342 (層級 1)

行為變更: 呼叫了 'function',但是先前版本中呼叫的是成員運算子

C4350 (層級 1)

行為變更: 呼叫了 'member1' 而不是 'member2'

C4355

'this' : 在基底成員初始設定式清單中使用

C4365 (層級 4)

'action': 從 'type_1' 轉換為 'type_2',signed/unsigned 不相符

C4370 (層級 3)

因為較佳的封裝,類別配置已從舊版的編譯器變更

C4371 (層級 3)

因為可提供較佳的成員 'member' 封裝,類別配置可能已從舊版的編譯器變更

C4388 (層級 4)

帶正負號/不帶正負號不相符

C4412 (層級 2)

'function': 函式簽章含有類型 'type',C++ 物件在純程式碼與混合或機器碼之間傳遞並不安全

C4431 (層級 4)

遺漏類型規範 - 假設為 int。 注意: C 已不再支援 default-int

C4435 (層級 4)

'class1' : /vd2 底下的物件配置將因虛擬基底 'class2' 而變更

C4437 (層級 4)

從虛擬基底 'class1' 到 'class2' 的 dynamic_cast 在某些內容中可能會失敗

C4444 (層級 3)

此內容未實作最上層的 '__unaligned'

C4471 (層級 4)

不限範圍的列舉之向前宣告必須含有基礎類型 (假設是 int)

C4472 (層級 1)

'identifier' 是原生列舉:新增存取規範 (private/public) 以便宣告 Managed 列舉

C4514 (層級 4)

'function': 已移除未參考的內嵌函式

C4536 (層級 4)

'type name': 類型名稱超出中繼資料 'limit' 個字元的限制

C4545 (層級 1)

逗號之前的運算式判斷值為遺漏引數清單的函式

C4546 (層級 1)

逗號之前的函式呼叫遺漏引數清單

C4547 (層級 1)

'operator': 逗號之前的運算子無效; 必須是具有副作用的運算子

C4548 (層級 1)

逗號之前的運算式無效; 必須是具有副作用的運算式

C4549 (層級 1)

'operator': 逗號之前的運算子無效; 您需要 'operator' 嗎?

C4555 (層級 1)

運算式無效; 必須是具有副作用的運算式

C4557 (層級 3)

'__assume' 包含有效的 'effect'

C4571 (層級 4)

告知性:catch(…) 語意 (Semantics) 從 Visual C++ 7.1 開始已經變更,不再攔截結構化例外狀況處理常式 (SEH)

C4574 (層級 4)

'identifier' 定義為 '0':您是指使用 '#if identifier' 嗎?

C4608 (層級 3)

'symbol1' 已由初始設定式清單 'symbol2' 中的其他等位成員初始化

C4619 (層級 3)

#pragma warning: 警告編號 'number' 不存在

C4623 (層級 4)

'derived class': 因為無法存取基底類別預設建構函式,所以無法產生預設建構函式

C4625 (層級 4)

'derived class': 因為無法存取基底類別複製建構函式,所以無法產生複製建構函式

C4626 (層級 4)

'derived class': 因為無法存取基底類別的指派運算子,所以無法產生指派運算子

C4628 (層級 1)

不支援使用 -Ze 的雙拼詞。 字元順序 'digraph' 沒有解譯為 'char' 的替代語彙基元 (Token)

C4640 (層級 3)

'instance': 區域靜態物件的建構不是安全執行緒

C4668 (層級 4)

'symbol' 未定義成前置處理器巨集,以 '0' 取代 'directives'

C4682 (層級 4)

'symbol':沒有指定方向參數屬性,預設為 [in]

C4686 (層級 3)

'user-defined type': 行為可能有變更,在 UDT 傳回呼叫慣例中發生變更

C4692 (層級 1)

'function':非私用成員的簽章含有組件私用原生類型 'native_type'

C4710 (層級 4)

'function': 未內嵌函式

C4738 (層級 3)

在記憶體中儲存 32 位元浮點結果,可能會損失效能

C4767 (層級 4)

區段名稱 'symbol' 超過 8 個字元,將由連結器截斷

C4786 (層級 3)

'symbol':物件名稱被截斷成 'number' 個字元 (在偵錯資訊中)

C4820 (層級 4)

在成員建構 'member_name' 之後加入 'bytes' 位元組填補

C4826 (層級 2)

從 'type1' 至 'type2' 的轉換是 sign-extended。 這可能會造成未預期的執行階段行為

C4837 (層級 4)

偵測到三併詞: '??%c' 已由 '%c' 取代

C4905 (層級 1)

寬字串常值轉換成 'LPSTR'

C4906 (層級 1)

字串常值轉換成 'LPWSTR'

C4917 (層級 1)

'declarator': GUID 僅能與類別、介面或命名空間產生關聯

C4928 (層級 1)

不合法的 copy-initialization; 已經隱含套用一個以上的使用者定義的轉換

C4931 (層級 4)

我們假設已針對 number 位元指標建置類型程式庫

C4946 (層級 1)

在關聯的類別之間使用的 reinterpret_cast:'class1' 和 'class2'

C4962

'function': 特性指引最佳化已停用,因為最佳化導致分析資料變成不一致

C4986 (層級 4)

'symbol':例外狀況規格與上一個宣告不符

C4987 (層級 4)

使用非標準的擴充:'throw (...)'

C4988 (層級 4)

'symbol':變數已在類別/函式範圍外宣告

請參閱

參考

warning