为了测试功能,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链接内)?
根据cppreference.com,它说:
当功能已包含在工作草案中时,以下宏将扩展为与年份和月份相对应的数值。
当功能发生重大变化时,宏将相应地更新。
因此,您可以检查功能是否存在,并检查是否定义了宏。或者,您可以根据宏值检查功能部件版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句