_MSC_VER、_WIN32_WINNT

本文介绍了如何在MSVC编译器中通过预定义宏_MSC_VER进行版本检查,并利用#pragma warning来抑制特定版本警告。重点讲解了如何针对不同版本的MSVC编译器进行代码优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#if defined(_MSC_VER)
/* Disable MSVC 'sprintf unsafe' warning */
#pragma warning( disable : 4996 )
#endif

   #if _MSC_VER > 1000 
   #pragma once 
   #endif // _MSC_VER > 1000 
   _MSC_VER 是一个预定义宏,指的是编译器的版本。VC++6.0的版本是1200,VC++5.0的为1000。_MSC_VER > 1000指的是编译器要VC++5.0以上的版本。
1500 主版本号就是为“15”,而次版本00
        Compiler                               _MSC_VER value
   --------------------                    --------------------
   C Compiler version 6.0600
   C/C++ compiler version 7.0                      700
   Visual C++, Windows, version 1.0                800
   Visual C++, 32-bit, version 1.0                 800
   Visual C++, Windows, version 2.0                900
   Visual C++, 32-bit, version 2.x                 900
   Visual C++, 32-bit, version 4.0                 1000
   Visual C++, 32-bit, version 5.0                 1100
   Visual C++, 32-bit, version 6.0                 1200
   Visual C++, 32-bit, version 2002 7.0            1300
   Visual C++, 32-bit, version 2003 7.1            1310
   Visual C++, 32-bit, version 2005 8.0            1400
   Embedded Visual C++, 32-bit,version 4.0        Cross 1200 - 1202
   Visual C++, 32-bit, version 2008 9.0            1500
   Visual C++, 32-bit, version 2010 10.0           1600
   Visual C++, 32-bit, version 2010 11.0           1700

//Microsoft SDKs\Windows\v7.0A\include\sdkddkver.h
// _WIN32_WINNT version constants
//
#define _WIN32_WINNT_NT4                           0x0400
#define _WIN32_WINNT_WIN2K                      0x0500
#define _WIN32_WINNT_WINXP                      0x0501
#define _WIN32_WINNT_WS03                        0x0502
#define _WIN32_WINNT_WIN6                        0x0600
#define _WIN32_WINNT_VISTA                       0x0600
#define _WIN32_WINNT_WS08                       0x0600
#define _WIN32_WINNT_LONGHORN            0x0600
#define _WIN32_WINNT_WIN7                       0x0601
#define _WIN32_WINNT_WIN8                       0x0602
typedef _Struct_size_bytes_(UrbHeader.Length) struct _URB { union { struct _URB_HEADER UrbHeader; struct _URB_SELECT_INTERFACE UrbSelectInterface; struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration; struct _URB_PIPE_REQUEST UrbPipeRequest; struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl; struct _URB_GET_FRAME_LENGTH UrbGetFrameLength; struct _URB_SET_FRAME_LENGTH UrbSetFrameLength; struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber; struct _URB_CONTROL_TRANSFER UrbControlTransfer; #if (_WIN32_WINNT >= 0x0600) struct _URB_CONTROL_TRANSFER_EX UrbControlTransferEx; #endif struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer; struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer; struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest; struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest; struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest; struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest; struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest; struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest; #if (_WIN32_WINNT >= 0x0501) struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST UrbOSFeatureDescriptorRequest; #endif #if (NTDDI_VERSION >= NTDDI_WIN8) struct _URB_OPEN_STATIC_STREAMS UrbOpenStaticStreams; #endif #if (NTDDI_VERSION >= NTDDI_WIN10_RS3) struct _URB_GET_ISOCH_PIPE_TRANSFER_PATH_DELAYS UrbGetIsochPipeTransferPathDelays; #endif }; } URB, *PURB; #if _MSC_VER >= 1200 #pragma wa
03-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值