c++ - INTERNET_SCHEME_HTTPS 在两个头文件中的定义如何不同?

标签 c++ c visual-studio winapi

假设,如果我包含 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。

引用自WinINet vs. WinHTTP在 MSDN 上:

With a few exceptions, WinINet is a superset of WinHTTP. When selecting between the two, you should use WinINet, unless you plan to run within a service or service-like process that requires impersonation and session isolation.

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

如果出于某种原因你需要两者,要么将实现分成单独的模块,要么按照 Harry Johnston 和 IInspectable 的评论中的建议,使用 #pragma push_macro 保存宏。然后 #undef 它。

关于c++ - INTERNET_SCHEME_HTTPS 在两个头文件中的定义如何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32726887/

相关文章:

c - 指向字符串的指针数组(指针的基本类型)

c++ - 如何在 C++ 的 VS2013 中关闭自动格式化?

c++ - C++ 中的数字模式

c - 在嵌入式 c 中使用 printf

c++ - 等待条件变量加载 CPU 内核吗?

C语言传递二维数组作为参数

javascript - 在真正的 IDE 中开发 Tampermonkey 脚本,并自动部署到 OpenUserJs 存储库

c++ - 如何在 CUDA C++ 中生成 XML 文档文件?

c++ - C格式说明符问题

C++ 11成员初始化器列表与类内初始化器?