如何使用C ++“功能测试宏”?

时间:2018-10-10 21:08:12

标签: c++ gcc compiler-flags dialect

要测试功能,cppreference提到了以下功能测试宏: link

如果该功能存在于编译器中,则定义宏。但是我不明白为什么将它们定义为201606之类的东西,我相信它是 C ++版本,而不是编译器

例如,我正在使用功能-std=c++17的{​​{1}}的最新版GCC。宏是未定义的,尽管使用c ++ 17(和c ++ 2a)开关尝试了8.2.1,我还是要说GCC没有该功能。在这种情况下,记录值的意义是什么?

__cpp_lib_hardware_interference_size

(在cppreference链接中)?

1 个答案:

答案 0 :(得分:3)

基于cppreference.com,它说:

  

以下宏扩展为与   该功能已包含在工作中的年份和月份   草稿。

     

当功能发生重大变化时,宏将被更新   相应地。

因此,您可以检查功能是否存在,并检查是否定义了宏。或者,您可以根据宏值检查功能版本。