C/C++ 程式碼分析警告
更新:2007 年 11 月
本節將列出 C/C++ 程式碼分析警告清單 (編號範圍從 C6000 到 C6999)。
在本節中
警告編號 |
說明 |
---|---|
警告 C6001: 使用未初始化的記憶體 <variable> |
|
警告 C6011: 取值 NULL 指標 <name> |
|
警告 C6029: <function> 的呼叫中可能有緩衝區滿溢: 使用了未經確認的值 |
|
警告 C6031: 已忽略傳回值: <function> 可能傳回未預期的值 |
|
警告 C6053: <function> 的呼叫可能沒有以零結束的字串 <variable> |
|
警告 C6054: 字串 <variable> 可能不是以零結尾 |
|
警告 C6057: <function> 呼叫中的字元數/位元組數不符,因而造成緩衝區滿溢 |
|
警告 C6059: <function> 呼叫中參數的長度不正確。請傳遞剩餘字元數,而非 <variable> 的緩衝區大小 |
|
警告 C6063: 遺漏 <function> 的字串引數 (與轉換規範 <number> 對照) |
|
警告 C6064: 遺漏 <function> 的整數引數 (與轉換規範 <number> 對照) |
|
警告 C6066: 傳遞非指標做為參數 <number>,但 <function> 呼叫需要指標 |
|
警告 C6067: 參數 <number> (於 <function> 呼叫中) 必須為字串的位址 |
|
警告 C6200: 索引 <name> 超出有效的索引範圍: <min> 到 <max> (此索引範圍屬於非堆疊緩衝區 <variable>) |
|
警告 C6201: 可能為堆疊配置的緩衝區 <variable> 發生緩衝區滿溢: 索引 <name> 超出有效的索引範圍: <min> 到 <max> |
|
警告 C6202: 可能為堆疊配置的緩衝區 <variable> 發生緩衝區滿溢 (於 <function>呼叫中): 長度 <size> 超過緩衝區大小 <max> |
|
警告 C6203: 緩衝區 <variable> 發生緩衝區滿溢 (於 <function> 呼叫中): 長度 <size> 超過緩衝區大小 |
|
警告 C6204: <function> 的呼叫中可能有緩衝區滿溢: 使用了未經確認的參數 <variable> |
|
警告 C6209: 使用 'sizeof<variable1>' 做為參數 <number> (於 <function> 呼叫中),其中 <variable2> 可能為寬字元的陣列。您是否想要使用字元計數而非位元組計數? |
|
警告 C6211: 因例外狀況而造成遺漏的記憶體 <pointer>。請考慮使用區域 catch 區塊清除記憶體 |
|
警告 C6214: 語意不相同的整數型別之間發生轉型: HRESULT 轉型成布林型別 |
|
警告 C6215: 語意不相同的整數型別之間發生轉型: 布林型別轉型成 HRESULT |
|
警告 C6216: 語意不相同的整數類資料型別之間發生編譯器插入的轉型: 布林型別轉型成 HRESULT |
|
警告 C6217: 語意不相同的整數型別之間發生隱含轉型: 以 'not' 測試 HRESULT。考慮改用 SUCCEEDED 或 FAILED 巨集 |
|
警告 C6219: 語意不相同的整數型別之間發生隱含轉型: 將 HRESULT 比作 1 或 TRUE。考慮改用 SUCCEEDED 或 FAILED 巨集 |
|
警告 C6220: 語意不相同的整數型別之間發生隱含轉型: 將 HRESULT 比作 -1。請考慮改用 SUCCEEDED 或 FAILED 巨集 |
|
警告 C6221: 語意不相同的整數型別之間發生隱含轉型: 將 HRESULT 比作整數。請考慮改用 SUCCEEDED 或 FAILED 巨集 |
|
警告 C6225: 語意不相同的整數型別之間發生隱含轉型: 將 1 或 TRUE 指派給 HRESULT。請考慮改用 S_FALSE |
|
警告 C6226: 語意不相同的整數型別之間發生隱含轉型: 將 -1 指派給 HRESULT。請考慮改用 E_FAIL |
|
警告 C6230: 語意不相同的整數型別之間發生隱含轉型: 在布林內容中使用 HRESULT |
|
警告 C6235: (<非零常數> || <運算式>) 永遠為非零的常數 |
|
警告 C6236: (<運算式> || <非零常數>) 永遠為非零的常數 |
|
警告 C6237: (<零> && <運算式>) 永遠為零。<運算式> 不會加以評估且可能有副作用 |
|
警告 C6239: (<非零常數> && <運算式>) 永遠評估為 <運算式> 的結果。您打算使用位元 AND 運算子嗎? |
|
警告 C6240: (<運算式> && <非零常數>) 永遠評估為 <運算式> 的結果。您打算使用位元 AND 運算子嗎? |
|
警告 C6242: 跳出此 try 區塊會強制區域回溯,而對效能帶來嚴重的負面影響 |
|
警告 C6244: <variable> 的區域宣告會隱藏先前的宣告,其位於第 <line> 行 (<file> 中) |
|
警告 C6246: <variable> 的區域宣告會隱藏外部範圍中相同名稱的宣告。其他資訊: 請參閱先前的宣告,其位於 <location>。 |
|
警告 C6248: 將 SECURITY_DESCRIPTOR 的 DACL 設為 NULL,將會產生不受保護的物件 |
|
警告 C6250: 呼叫沒有 MEM_RELEASE 旗標的 <function> VirtualFree 可能會釋放記憶體,但不會釋放位址描述項 (VAD),因而導致位址空間遺漏 |
|
警告 C6255: _alloca 會藉由引發堆疊溢位例外狀況來表示錯誤。請考慮改用 _alloca_s |
|
警告 C6258: 使用 TerminateThread 會無法正確清除執行緒 |
|
警告 C6259: 不可能執行到標記的程式碼: switch-expr 中的 (<運算式> & <常數>) 無法評估為 <case-label> |
|
警告 C6260: sizeof * sizeof 幾乎都會得到錯誤的結果,您原先要使用的是字元計數還是位元組計數? |
|
警告 C6262: 函式使用 <constant> 個位元組的堆疊: 超過 /analyze:stacksize<constant>。請考慮將部分資料移至堆積 |
|
警告 C6263: 迴圈中的 using _alloca: 這可能會迅速讓堆疊溢位 |
|
警告 C6268: 不正確的作業順序: (<TYPE1>)(<TYPE2>)x + y。(<TYPE1>)((<TYPE2>)x + y) 中可能遺漏括號 |
|
警告 C6269: 作業順序可能不正確: 已忽略取值 |
|
警告 C6270: 遺漏 <function> 的浮點引數: 加入對應轉換規範 <number> 的浮點引數 |
|
警告 C6271: 傳遞額外的引數至 <function>: 參數 <number> 不是由格式字串使用 |
|
警告 C6272: 傳遞非浮點做為引數 <number>,但 <function> 呼叫中需要浮點 |
|
警告 6273: 傳遞非整數做為參數 <number>,但 <function> 呼叫中需要整數: 如果傳遞指標值,則應使用 %p |
|
警告 C6274: 傳遞非字元做為參數 <number>,但 <function> 呼叫中需要字元 |
|
警告 C6276: 語意不相同的字串型別之間發生轉型: char * 轉型成 wchar_t *。使用無效的字串可能導致未定義的行為 |
|
警告 C6277: <function> 呼叫中的 NULL 應用程式名稱含有不具引號的路徑: 如果路徑包含空格,則會導致安全性弱點 |
|
警告 C6278: <variable> 是以陣列 new [] 配置,但以純量 delete 刪除。將不會呼叫解構函式 |
|
警告 C6279: <variable> 是以純量 new 配置,但以陣列 delete [] 刪除 |
|
警告 C6280: <variable> 是以 <function> 配置,但以 <function> 刪除 |
|
警告 6281: 不正確的作業順序: 關係運算子的優先順序高於位元運算子 |
|
警告 C6282: 不正確的運算子: 在布林內容中指派常數。請考慮改用 '==' |
|
警告 C6283: <variable> 是以陣列 new [] 配置,但以純量 delete 刪除 |
|
警告 C6284: 傳遞物件做為參數 '%d',但 <function> 呼叫中需要字串。 |
|
警告 C6285: (<非零常數> || <非零常數>) 永遠是非零的常數。您打算使用位元 AND 運算子嗎? |
|
警告 C6286: (<非零常數> || <運算式>) 永遠是非零的常數。<運算式> 不會加以評估且可能有副作用 |
|
警告 C6287: 多餘的程式碼: 左邊和右邊的子運算式完全相同 |
|
警告 C6288: 不正確的運算子: 在互容的情況下使用 && 運算子,其結果永遠為零。您是否想要改用 ||? |
|
警告 C6289: 不正確的運算子: 在互斥的情況下使用 || 運算子,其結果永遠為非零的常數。您是否想要改用 &&? |
|
警告 C6290: 邏輯結果的位元運算: ! 的優先順序高於 &。請改用 && 或 (!(x & y)) |
|
警告 C6291: 邏輯結果的位元運算: ! 的優先順序高於 |。請改用 || 或 (!(x | y)) |
|
警告 C6292: 定義錯誤的 for 迴圈: 從最大值向上計數 |
|
警告 C6293: 定義錯誤的 for 迴圈: 從最小值向下計數 |
|
警告 C6294: 定義錯誤的 for 迴圈: 初始條件未滿足測試。未執行迴圈主體 |
|
警告 C6295: 定義錯誤的 for 迴圈: <variable> 的值永遠落在 "min" 到 "max" 的範圍內。迴圈無限執行 |
|
警告 C6296: 定義錯誤的 for 迴圈: 僅執行迴圈主體一次 |
|
警告 C6297: 算術溢位: 對 32 位元值進行移位運算,然後再轉型成 64 位元值。結果可能不是預期的值 |
|
警告 C6298: 使用唯讀字串 <pointer> 做為可寫入的字串引數: 如此將嘗試寫入靜態唯讀記憶體並造成無預警當機 |
|
警告 C6299: 明確比較位元欄位和布林型別,將產生未預期的結果 |
|
警告 C6299: 明確比較位元欄位和布林型別,將產生未預期的結果 |
|
警告 C6303: 格式字串不符合: 傳遞寬字元字串做為參數 <number>,但 <function> 的呼叫中需要字元字串 |
|
警告 C6305: sizeof 和 countof 的數量可能不相符 |
|
警告 C6306: <function> 呼叫不正確: 請考慮使用可接受 va_list 做為引數的 <function> |
|
警告 C6308: 'realloc' 可能傳回 null 指標: 指派 null 指標給 <variable> (其做為引數傳遞至 'realloc'),將造成原始記憶體區塊遺漏 |
|
警告 C6309: 引數 <number> 為 null: 這並未遵守 <function> 的函式規格 |
|
警告 C6310: 例外狀況篩選條件中的不合法常數會造成未預期的行為 |
|
警告 C6312: 可能的無限迴圈: 在 try-except 的例外狀況篩選條件運算式中使用常數 EXCEPTION_CONTINUE_EXECUTION |
|
警告 C6313: 不正確的運算子: 值為零的旗標無法使用位元 AND 測試。請使用相等測試檢查是否有值為零的旗標 |
|
警告 C6314: 不正確的作業順序: 位元 OR 的優先順序高於條件運算運算子。加入括號來釐清目的。 |
|
警告 C6315: 不正確的作業順序: 位元 AND 的優先順序高於位元 OR。加入括號來釐清目的。 |
|
警告 C6316: 不正確的運算子: 測試的運算式為常數且非零。請使用位元 AND 判斷位元是否已設定 |
|
警告 C6317: 不正確的運算子: 邏輯否定 (!) 與 1 補數 (~) 不能互換 |
|
警告 C6318: 定義錯誤的 __try/__except: 在例外狀況篩選條件運算式中使用常數 EXCEPTION_CONTINUE_SEARCH 或其他評估為零的常數。未執行例外處理常式區塊中的程式碼 |
|
警告 C6319: 在測試的運算式中使用逗號運算子會導致左邊的引數 (如果它沒有副作用) 被忽略 |
|
警告 C6320: 例外狀況篩選條件運算式是常數 EXCEPTION_EXECUTE_HANDLER。這可能會對不要進行處理的例外狀況做遮罩處理 |
|
警告 C6322: 空白 _except 區塊 |
|
警告 6323: 在布林型別上使用算術運算子 |
|
警告 C6324: <function1> 的使用可能不正確: 您是否想要使用 <function2>? |
|
警告 C6326: 可能將常數和其他常數做比較 |
|
警告 C6327: 可能的緩衝區滿溢: SysAllocStringLen 複製 <number> 個字元 (從字串 <variable>),但未驗證要複製的字元數。程式碼可能會損毀 |
|
警告 C6328: 傳遞 <type> 做為參數 <number>,但 <function> 呼叫中需要 <type> |
|
警告 C6331: 無效的參數: 不允許將 MEM_RELEASE 和 MEM_DECOMMIT 的組合傳遞至 <function>。這樣就會造成這個呼叫的失敗 |
|
警告 C6332: 無效的參數: 不允許將零做為 dwFreeType 參數傳遞至 <function>。這樣就會造成這個呼叫的失敗 |
|
警告 C6333: 無效的參數: 不允許傳遞 MEM_RELEASE 和非零的 dwSize 參數至 <function>。這樣就會造成這個呼叫的失敗 |
|
警告 C6334: 將 sizeof 運算子套用至已有一個運算子的運算式,可能會產生未預期的結果 |
|
警告 C6335: 遺漏處理序資訊控制代碼 <handlename> |
|
警告 C6336: 算術運算子的優先順序高於問號運算子,請使用括號釐清目的 |
|
警告 C6381: 關閉 API <function> 需要有效的 dwReason 或 lpMessage |
|
警告 C6383: 因將元素計數轉換成位元組計數而導致緩衝區滿溢: 參數 <number> 於 <function> 呼叫中時必須是元素計數 |
|
警告 C6384: 將指標的大小除以其他值 |
|
警告 C6385: 無效的資料: 存取 <buffer name>,可讀取的大小為 <size1> 個位元組,但可能讀取 <size2> 個位元組: 行: x, y |
|
警告 C6386: 緩衝區滿溢: 存取 <buffer name>,可寫入的大小為 <size1> 個位元組,但可能寫入 <size2> 個位元組: 行: x, y |
|
警告 C6387: <argument> 會是 <value>: 這並未遵守函式 <function name> 的規格: 行: x, y |
|
警告 C6388: <argument> 不可以是 <value>: 這並未遵守函式 <function name> 的規格: 行: x, y |
|
警告 C6400: 使用 <function name> 執行與常數字串 <string name> 的不區分大小寫的比較。在非英文地區設定中產生未預期的結果 |
|
警告 C6401: 在預設地區設定中使用 <function name> 執行與常數字串 < string name> 的不區分大小寫的比較。在非英文地區設定中產生未預期的結果 |
|
警告 C6500: 無效的附註: <name> 屬性的值無效 |
|
警告 C6501: 附註衝突: <name> 屬性與之前指定的屬性發生衝突 |
|
警告 C6503: 附註衝突: 參考不可標記為 Null=Yes 或 Null=Maybe |
|
警告 C6504: 無效的附註: 屬性只能在指標、成員指標、陣列或參考型別的值上使用 |
|
警告 C6505: 無效的附註: MustCheck 屬性不可以在 void 型別的值上使用 |
|
警告 C6506: 無效的附註: <name> 屬性只能在指標或陣列型別的值上使用 |
|
警告 C6507: 附註衝突: 在後置條件中 Deref=0 的 Null 屬性必須是先前條件之 Null 屬性的子集 |
|
警告 C6508: 無效的附註: 常數值上不允許寫入權限 |
|
警告 C6509: 無效的附註: 'return' 無法從先前的條件參考 |
|
警告 C6510: 無效的附註: NullTerminated 屬性只能在指標或陣列型別的值上使用 |
|
警告 C6511: 無效的附註: MustCheck 屬性必須是 Yes 或 No |
|
警告 C6512: 無效的附註: 如果 Valid 屬性是 No,則 Null 屬性必須是 Maybe |
|
警告 C6513: 無效的附註: ElementSize 需要額外的大小屬性 |
|
警告 C6514: 無效的附註: <name> 屬性的值超過陣列大小 |
|
警告 C6515: 無效的附註: <name> 屬性只能在指標型別的值上使用 |
|
警告 C6516: 無效的附註: 沒有為 <name> 屬性 (Attribute) 指定任何屬性 (Property) |
|
警告 C6517: 附註衝突: ValidElementsConst 和 ValidBytesConst 不可以在不可讀取的緩衝區上指定 |
|
警告 C6518: 無效的附註: WriteableElementsConst 和 WriteableBytesConst 不可以在不可寫入的緩衝區上指定 |
|
警告 C6521: 無效的大小規格: * 運算子只能套用至指標型別 |
|
警告 C6522: 無效的大小規格: 運算式必須是整數類資料型別 |
|
警告 C6523: 無效的大小規格: 找不到參數 <name> |
|
警告 C6525: 無效的大小規格: 屬性值可能無效 |
|
警告 C6526: 無效的大小規格: 運算式必須是陣列或指標型別 |
|
警告 6530: 無法辨認的格式字串樣式 <name> |
|
警告 C6535: 緩衝區不可為大小 <n>,也不可大於 max(size_t) |