[英]Unwanted sal.h warnings
我正在嘗試使用VS 2008來編譯一些C代碼。 我將項目配置為使用ANSI C標准,沒有任何語言擴展。 我還將警告級別從3提高到4。
在構建項目時,我總是收到此警告:
c:\program files\microsoft visual studio 9.0\vc\include\sal.h(108) : warning C4001: nonstandard extension 'single line comment' was used
我理解這個警告,但我怎么擺脫它呢? 我沒有在任何地方包含sal.h。 此外,在創建解決方案時,我選擇了Win32 Console Application並選中了“Empty Project”復選框。
編輯:我按照建議啟用了/ showIncludes開關,但它並沒有真正幫助,因為它沒有顯示包含什么的內容。 VS似乎包含了很多東西:
Compiling...
go.c
Note: including file: c:\projects\c\kr\kr\e.01.01.h
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\sal.h
c:\program files\microsoft visual studio 9.0\vc\include\sal.h(108) : warning C4001: nonstandard extension 'single line comment' was used
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\crtassem.h
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\vadefs.h
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\swprintf.inl
Linking...
我錯過了一些編譯器開關嗎?
#pragma warning( disable:4001)
把這個放在有問題的行之前編譯的地方。
有關更多詳細信息,請參閱MSDN中的#pragma warning documentation。
稍后編輯
使用Visual C ++中的選項在編譯時顯示包含文件(它應該在C ++部分的高級選項中的某個位置)。 它可以提供包含sal.h的想法。 可能一些VC庫間接包含此標頭。 如果它是一個C頭,我想知道為什么他們使用C ++風格的評論...
不幸的是你有點卡住了 - 微軟的運行時頭文件似乎不僅僅使用單行注釋sal.h
(例如, stdlib.h
使用它們),所以你可以:
#include
指令以在包含它們時禁用警告並在之后重新啟用它們 或上述的某種組合。
選項#1很可能讓你很容易走:
#pragma warning( push)
#pragma warning( disable : 4001)
#include <stdlib.h>
/* other runtime includes */
#pragma warning( pop)
但是如果運行時頭文件中還有其他非ANSI內容,我也不會感到驚訝。 在給出選項時,看起來他們已經嘗試將ANSI清理干凈,但我懷疑它沒有經過嚴格測試(特別是在非默認警告級別)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.