2011-03-18 78 views
7

我通常在Linux下使用gcc和-ansi標誌編譯&;但我一直被迫在Visual C++做工作,每當我編譯我的C代碼,我得到的所有微軟警告像將Visual C++ Studio/Express設置爲嚴格的ANSI模式

「的fscanf」:此函數或變量 可能是不安全的。考慮改用fscanf_s 。

儘管在MSDN開發人員站點上設置了一些ANSI C項目,但所有_s(「安全」)調用都不是ANSI C,但我仍然可以獲得這些信息!在我看來,微軟不應該給我這些警告。

有關將Visual C++ Studio放入嚴格的僅ANSI模式的建議?

謝謝。 >預處理器和添加_CRT_SECURE_NO_WARNING

這不是強制編譯器以符合ANSI -

回答

2

抑制特定警告的一種方法是在源代碼中添加如下內容。

#if defined(_WIN32) 
#pragma warning(disable:4996) 
#endif 
+0

選擇接受這一點,但欣賞所有其他答案。 – jparanich 2011-03-31 14:31:20

4

這些警告可通過定義_CRT_SECURE_NO_WARNING

轉到Procect設置被抑制。只是禁止使用..._ s警告

6

作爲另一個答覆中提到,#define「荷蘭國際集團_CRT_SECURE_NO_WARNING將解決你在你的問題中提到的具體的警告。

如果您確實在尋找僅支持ANSI的模式,最接近的是/Za compiler switch。在Visual Studio IDE中,可以在項目的「屬性」對話框中找到它(配置屬性| C/C++ |語言|禁用語言擴展)。

請注意,實際上所有Windows應用程序都是在啓用Microsoft的編譯器擴展的情況下構建的;例如,我認爲你甚至無法使用帶有/Za集的Windows SDK頭。如果你的代碼真的是嚴格的ANSI,你應該沒問題。如果在一個大多數嚴格爲ANSI的項目中有幾個特定於Windows的部分,則可能需要隔離這些源,並且只能使用未設置的/Za構建這些單獨的源文件。

+0

你是對的:''和'/ Za'編譯器開關互相仇恨。 [鏈接到Microsoft Connect - 錯誤*關閉*](http://connect.microsoft.com/VisualStudio/feedback/details/780509/including-windows-h-and-compiling-with-za-disable-language-extensions )。 – IInspectable 2013-11-12 15:19:54