共用方式為


C28183

警告 C28183: 引數可以是一個值,而且是在指標中找到值的複本

這則警告表示此值不是預期的目前內容。此警告通常會出現當 NULL 值被當做引數傳遞給不允許其的函式。值會指定的變數實際上找到,而引數則是該變數的複本。

程式碼分析工具報告這個警告之後才能明確地判斷第一個指標是 NULL 或它包含不合法的值。不過,它通常是屬於錯誤在發生之前的紀錄中。發生這種情況,程式碼分析工具會給定一個可能的執行個體的行數,通常在它無法判斷位置警告是否是適當的。在這些情況下,便會發生這種情況的先前的位置會附加到這個警告訊息。通常程式碼應該變更在該行號之前,而不是在報告的時候。

範例

在下列範例中,程式碼分析工具判斷 s 是空的,在 if 陳述式以及 if 主體中被取得。指標 s 再被指派給 tt 接著會使用差異可能發生的 NULL 。

#include <windows.h>

int fun2(char *s)
{
    char *t;
    if (s == NULL) {
       //... but s is unchanged 
    }

    t = s;

    return lstrlenA(t);
}

在這個程式碼範例中,程式碼分析工具會報告下列警告: