【发布时间】:2019-01-18 17:53:19
【问题描述】:
这个问题是关于 C++20 的 [[likely]]/[[unlikely]] 功能,而不是编译器定义的宏。
本文档 (cppreference) 仅给出了将它们应用于 switch-case 语句的示例。 这个 switch-case 示例与我的编译器 (g++-7.2) 完美编译,所以我假设编译器已经实现了这个功能,尽管它还没有在当前的 C++ 标准中正式引入。
但是当我像这样使用它们时:if (condition) [[likely]] { ... } else { ... },我收到了一个警告:
“警告:语句开头的属性被忽略[-Wattributes]”。
那么我应该如何在 if-else 语句中使用这些属性呢?
【问题讨论】:
-
如果某个条件更有可能出现在 if 语句中,则将其放在首位
-
@Mercer 我知道;但这不是我要问的......
-
它可能只是部分实现。从检查 g++ 文档开始,看看它是否应该被支持。
-
正如 molbdnillo 所说;由于 c++20 标准并不完整,更不用说发布了,它取决于编译器如何集成它喜欢的新功能。
-
你有例子可以给我们看吗?
标签: c++ gcc-warning c++20