C 预处理器定义了什么来禁用警告;GetVersionExW';:被宣布为不推荐使用”;

C 预处理器定义了什么来禁用警告;GetVersionExW';:被宣布为不推荐使用”;,c,winapi,visual-studio-2015,warnings,windows-7-x64,C,Winapi,Visual Studio 2015,Warnings,Windows 7 X64,我不允许更改代码。所以我不能使用#pragma。所以我的问题是,我需要传递给编译器的预处理器定义是什么,以禁用函数GetVersionExW的警告 我试过: \u CRT\u SECURE\u NO\u警告 \u CRT\u nonsdc\u NO\u不推荐 \u WINSOCK\u已弃用\u无警告 \u CRT\u SECURE\u NO\u弃用 试试这个: #pragma warning(disable: <warning number>) #杂注警告(禁用:) 试试这个:

我不允许更改代码。所以我不能使用
#pragma
。所以我的问题是,我需要传递给编译器的预处理器定义是什么,以禁用函数
GetVersionExW
的警告

我试过:

  • \u CRT\u SECURE\u NO\u警告

  • \u CRT\u nonsdc\u NO\u不推荐

  • \u WINSOCK\u已弃用\u无警告

  • \u CRT\u SECURE\u NO\u弃用

试试这个:

#pragma warning(disable: <warning number>)
#杂注警告(禁用:)
试试这个:

#pragma warning(disable: <warning number>)
#杂注警告(禁用:)

API调用
GetVersionExW
是使用声明的。无法禁用特定API调用的警告


您唯一的选择是完全禁用,可以在包含相应的头文件之前通过预处理器禁用,也可以在项目设置(编译器选项)中全局禁用。

API调用
GetVersionExW
是使用声明的。无法禁用特定API调用的警告


您唯一的选择是完全禁用,或者在包含相应的头文件之前通过预处理器禁用,或者在项目设置中全局禁用(编译器选项)。

他写道:我不允许更改代码。所以我不能用pragma。没有(还没有)被否决。事实上,我不会否决,因为答案仍然正确,即使它不符合OP的(有点奇怪)要求。很抱歉被搁浅了。我只知道答案已经准备好了,并试图避免它+1该pragma具有命令行等效项,
/Wd
。你要知道,除非你有一个合适的清单,否则Windows10会用这个函数欺骗你,说Windows8.1。他写道:我不允许更改代码。所以我不能用pragma。没有(还没有)被否决。事实上,我不会否决,因为答案仍然正确,即使它不符合OP的(有点奇怪)要求。很抱歉被搁浅了。我只知道答案已经准备好了,并试图避免它+1该pragma具有命令行等效项,
/Wd
。只需知道,除非你有一个合适的清单,否则Windows 10会用该函数欺骗你,并说Windows 8.1。不要使用该函数/宏,它在Windows 8.1中不可用我不允许更改代码:为什么你有这个要求?我认为有一种方法可以在没有pragma的情况下解决它,因为我可以在没有pragma的情况下解决其余的问题,并且#ifdef“不要使用该函数/宏,它在Windows 8.1中不可用”-这是完全错误的。该功能本身是可用的,只是它在8.1和更高版本上表现出新的行为,这取决于应用程序的表现方式。真正的问题是,为什么代码一开始就使用
GetVersionEx()
?通过检索无法以其他更可靠的方式解决的(可能是模拟的)操作系统版本号,代码试图解决什么问题?不要使用该函数/宏,它在Windows 8.1中不可用我不允许更改代码:为什么你有这个要求?我认为有一种方法可以在没有pragma的情况下解决它,因为我可以在没有pragma的情况下解决其余的问题,并且#ifdef“不要使用该函数/宏,它在Windows 8.1中不可用”-这是完全错误的。该功能本身是可用的,只是它在8.1和更高版本上表现出新的行为,这取决于应用程序的表现方式。真正的问题是,为什么代码一开始就使用
GetVersionEx()
?代码试图通过检索(可能是模拟的)操作系统版本号来解决什么问题,而这些版本号无法以其他更可靠的方式解决?