被 ntstatus.h 的宏重新定义所淹没

问题描述 投票:0回答:1

尽管添加了

#define
,我仍然收到同样的一堆警告,两次(下面标题是
#include
d 的次数),总共 100 多个警告:

#ifndef UMDF_USING_NTSTATUS
#define UMDF_USING_NTSTATUS
#endif // !UMDF_USING_NTSTATUS

#include <windows.h>
#include <memoryapi.h>
#include <ntsecapi.h>
#include <ntstatus.h>
#include <Sddl.h>

class MyClass
{
protected:
    static NTSTATUS MyMethod();
};

但我仍然收到一堆警告:

1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\SDKDDKVer.h(223): message : see previous definition of '_WIN32_WINNT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ntstatus.h(66,1): warning C4005: 'STATUS_WAIT_0': macro redefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winnt.h(2549): message : see previous definition of 'STATUS_WAIT_0'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ntstatus.h(223,1): warning C4005: 'STATUS_ABANDONED_WAIT_0': macro redefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winnt.h(2550): message : see previous definition of 'STATUS_ABANDONED_WAIT_0'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ntstatus.h(246,1): warning C4005: 'STATUS_USER_APC': macro redefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winnt.h(2551): message : see previous definition of 'STATUS_USER_APC'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ntstatus.h(282,1): warning C4005: 'STATUS_TIMEOUT': macro redefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winnt.h(2552): message : see previous definition of 'STATUS_TIMEOUT'

需要什么才能阻止这种情况?

c++ winapi macros visual-studio-2019 compiler-warnings
1个回答
0
投票

在这个特定的例子中我使用

#pragma 警告(推送) #pragma 警告(4005:禁用) #包括 #pragma 警告(pop)

只需禁用特定标头的消息。我还没有找到只让符号 #define 一次的方法。

© www.soinside.com 2019 - 2024. All rights reserved.