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

哈利克斯

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

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

例如,-std=c++17对于该功能,我使用的是GCC的最新版本__cpp_lib_hardware_interference_size宏是未定义的,尽管使用c ++ 17(和c ++ 2a)开关尝试了8.2.1,但我认为这是GCC不具有的功能。在这种情况下,记录值的重要性是什么:

__cpp_lib_hardware_interference_size 201703

(在cppreference链接内)?

J·卡列娅

根据cppreference.com,它说:

当功能已包含在工作草案中时,以下宏将扩展为与年份和月份相对应的数值。

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章