C++ C++;20模块接口和#布拉格警告

C++ C++;20模块接口和#布拉格警告,c++,visual-c++,warnings,c++20,c++-modules,C++,Visual C++,Warnings,C++20,C++ Modules,我似乎无法让VC++的#pragma warning在模块接口中工作。有什么变化吗 例如: module; #pragma warning( push, 0 ) #include <Windows.h> #include <ntstatus.h> #pragma warning( pop ) export module WarningsTest; export void TestFn(); 此外,作为一个模块,如何进行标题包含的警告管理?i、 e module;

我似乎无法让VC++的
#pragma warning
在模块接口中工作。有什么变化吗

例如:

module;

#pragma warning( push, 0 )
#include <Windows.h>
#include <ntstatus.h>
#pragma warning( pop )

export module WarningsTest;
export void TestFn();
此外,作为一个模块,如何进行标题包含的警告管理?i、 e

module;

#pragma warning( push, 0 )
import <Windows.h>;
import <ntstatus.h>;
#pragma warning( pop )

export module WarningsTest;
export void TestFn();
模块;
#pragma警告(推送,0)
进口;
进口;
#布拉格警告(pop)
输出模块警告测试;
导出void TestFn();

也会导致警告。这是同一个bug的一部分,还是有一种特定的方法来禁用外部模块标题的警告?

到第二个问题:根据我在模块标准化过程中回忆的内容,
import…
语句,无论是模块还是标题,在模块定义中必须放在第一位——我认为甚至在可以计算宏或pragma之前。我不确定它是否在经过几次修订后被批准时有所改变,但我怀疑您希望采用的
#pragma…
方法与模块不兼容。模块应该是一致的和自包含的——因此我不认为与
导入
混合使用的
#pragma
会在这样的情况下起作用。@Human Compiler我可以做
#如果0
很好,它会跳过解析导入。可能只是MSVC的事。
module;

#pragma warning( push, 0 )
import <Windows.h>;
import <ntstatus.h>;
#pragma warning( pop )

export module WarningsTest;
export void TestFn();