为什么INTERNET_SCHEME_HTTPS在两个头文件中定义不同?

How is it that INTERNET_SCHEME_HTTPS is defined differently in two header files?

本文关键字:文件 定义 两个 HTTPS SCHEME INTERNET 为什么      更新时间:2023-10-16

说,如果我包括Winhttp.h, INTERNET_SCHEME_HTTPS被定义为2:https://msdn.microsoft.com/en-us/library/windows/desktop/hh707320 (v = vs.85) . aspx

,但如果我包括Wininet.h,它被定义为4:https://msdn.microsoft.com/en-us/library/windows/desktop/aa385149 (v = vs.85) . aspx

那么是哪一个呢?

答案是两者都有效。这取决于你使用的是WinINet还是WinHTTP。

在MSDN上引用WinINet与WinHTTP的对比:

除了少数例外,WinINet是WinHTTP的超集。在两者之间进行选择时,应该使用WinINet,除非您计划在需要模拟和会话隔离的服务或类服务进程中运行。

简而言之,这两个接口是不兼容的,因为它们不必兼容。两者是互斥的。

如果你在一个情况下,出于某种原因,你需要两者,要么单独的实现到单独的模块,或在Harry Johnston的评论中建议,和IInspectable,保存宏使用#pragma push_macro,然后#undef它。