【发布时间】:2019-03-15 20:56:09
【问题描述】:
为了测试一个特性,cppreference 提到了这些特性测试宏: link.
如果编译器中存在该功能,则定义宏。但我不明白为什么如果定义它们,它们会被定义为 201606 之类的东西,我认为这是一个 C++ 版本,而不是编译器。
例如,我使用带有-std=c++17 的最新版本的GCC 来实现__cpp_lib_hardware_interference_size 功能。宏是未定义的,我认为这意味着 GCC 没有该功能,尽管使用 c++17(和 c++2a)开关尝试了 8.2.1。在这种情况下,记录值的意义是什么:
__cpp_lib_hardware_interference_size 201703
(在 cppreference 链接内)?
【问题讨论】:
-
在我看来,这只是面向未来,因此如果某个功能被认为不完整并且需要在标准的未来版本中进行更新,则可以区分更新前和更新后。
标签: c++ gcc compiler-flags dialect