如何识别生成警告的标头?

cpr*_*mer 7 c++ visual-studio

我相信很多人都熟悉这套警告.这些是包含文件生成的大部分时间.解决方案是pragma push/disable/pop,但识别标题不是一个好任务.

除了反复试验之外,有没有人知道识别标题的方法?

1>File1.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cstdio(49) : warning C4995: 'gets': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cstdio(53) : warning C4995: 'sprintf': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cstdio(56) : warning C4995: 'vsprintf': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cstring(22) : warning C4995: 'strcat': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cstring(23) : warning C4995: 'strcpy': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cwchar(36) : warning C4995: 'swprintf': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cwchar(37) : warning C4995: 'vswprintf': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cwchar(39) : warning C4995: 'wcscat': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cwchar(41) : warning C4995: 'wcscpy': name was marked as #pragma deprecated
1>Linking...
Run Code Online (Sandbox Code Playgroud)

小智 14

在我的情况下,移动#include <strsafe.h>到列表的底部摆脱了警告,而不使用额外的编译器指令.

找出#pragma deprecated调用位置的一个好方法是进入"预处理器"下的编译器设置,并将生成预处理文件设置为类似于行号(/ P).重建,然后打开*.i文件并搜索deprecated.附近将是违规的名称包括.

我正在使用VS2003,因此对话框可能会略有不同.