C28183
警告 C28183: 引數可以是一個值,而且是在指標中找到值的複本
這則警告表示此值不是預期的目前內容。 此警告通常會出現當 NULL 值被當做引數傳遞給不允許其的函式。 值會指定的變數實際上找到,而引數則是該變數的複本。
程式碼分析工具報告這個警告之後才能明確地判斷第一個指標是 NULL 或它包含不合法的值。 不過,它通常是屬於錯誤在發生之前的紀錄中。 發生這種情況,程式碼分析工具會給定一個可能的執行個體的行數,通常在它無法判斷位置警告是否是適當的。 在這些情況下,便會發生這種情況的先前的位置會附加到這個警告訊息。 通常程式碼應該變更在該行號之前,而不是在報告的時候。
範例
在下列範例中,程式碼分析工具判斷 s 是空的,在 if 陳述式以及 if 主體中被取得。 指標 s 再被指派給 t t 接著會使用差異可能發生的 NULL 。
#include <windows.h>
int fun2(char *s)
{
char *t;
if (s == NULL) {
//... but s is unchanged
}
t = s;
return lstrlenA(t);
}
在這個程式碼範例中,程式碼分析工具會報告下列警告: