我收到this question中描述的相同警告。 答案是有效的,但由于我的程序应该可以在XP,Vista和7中运行,我担心如果我将Windows版本定义为XP,我将在其他系统中遇到问题。
即使我确定了特定的版本,我也必须在我的所有C ++项目中设置它,这很麻烦。我想为XP,Vista和7创建单独的构建配置,每个配置都在所有C ++项目中都有正确的预处理器定义。有更优雅的解决方案吗?
答案 0 :(得分:1)
API是向后兼容的,因此您应该将define设置为您要支持的最低版本。在您的情况下,对于XP及更高版本,请将其设置为0x0501
。如果您还想支持Win2k,请将其设置为0x0500
。
微软付出了很多努力来确保新的操作系统不会破坏API,即使它们确实存在,你仍然需要使用boost.asio进行额外的抽象层。
您对不同构建配置的想法并不差,但如果您专门计划使用新功能,那么只有您想要支持的所有版本都无法使用。例如,Boost.asio仅使用Win32 API中的Winsock子集,因此您在此处绝对不会获得任何内容。