2012-11-25 50 views
3

我有4個文件,所有的人開放數據從_wfopen(txt文件,如下圖所示:C++ C4996錯誤

FILE* file = _wfopen(L"data.txt",L"r,ccs=utf-8"); 

VC++給我一個錯誤C4996,但在一個頭文件只有其他三人完全沒有錯誤。我怎樣才能解決這個問題 ? 更新: 我的教授給了我這個code.I編譯它,並且只有C4996警告。因爲我需要重用它,我創建了一個新項目並將其代碼中的所有內容複製到新項目中。然後它給了我一個C4996錯誤。

+0

C4996應該是一個警告,通常無害的,如果你知道自己在做什麼。使用'#pragma警告(禁用:4996)'擺脫它(用'編譯指示警告(push)'''''編譯指示警告(pop)''環繞'' –

+0

其實,這不是我的代碼。我的教授給了我作爲C#項目的組件?讓我們希望他的代碼是正確的。 – Husky

回答

2

Web上的淺層搜索表示您正在使用不推薦使用的函數,因此引發錯誤C4996。如示例所示,您應該使用_wfopen_s函數。

... 
// Create an the xml file in text and Unicode encoding mode. 
if ((fileHandle = _wfopen(L"_wfopen_test.xml",L"wt+,ccs=UNICODE")) == NULL) // C4996 
// Note: _wfopen is deprecated; consider using _wfopen_s instead 
{ 
    wprintf(L"_wfopen failed!\n"); 
    return(0); 
} 
... 

對於所有四次調用,只有一次這個錯誤的原因是編譯器會抑制重複的錯誤。

編號:http://msdn.microsoft.com/en-us/library/yeby3zcb.aspx

+0

我使用#pragma來禁用像Alexandre C這樣的頭文件中的警告,並且在其他頭文件中沒有錯誤。如果編譯器抑制了錯誤,那麼在其他頭文件中應該有錯誤。 – Husky

+0

既然你告訴編譯器不要警告你這個棄用,我想它不應該這樣做,因爲它不。 – Rubens

+0

感謝您的回答,現在一切正常。 – Husky