要测试功能,cppreference提到了以下功能测试宏: link。
如果该功能存在于编译器中,则定义宏。但是我不明白为什么将它们定义为201606
之类的东西,我相信它是 C ++版本,而不是编译器。
例如,我正在使用功能-std=c++17
的{{1}}的最新版GCC。宏是未定义的,尽管使用c ++ 17(和c ++ 2a)开关尝试了8.2.1,我还是要说GCC没有该功能。在这种情况下,记录值的意义是什么?
__cpp_lib_hardware_interference_size
(在cppreference链接中)?
答案 0 :(得分:3)
基于cppreference.com,它说:
以下宏扩展为与 该功能已包含在工作中的年份和月份 草稿。
当功能发生重大变化时,宏将被更新 相应地。
因此,您可以检查功能是否存在,并检查是否定义了宏。或者,您可以根据宏值检查功能版本。