首页 > 解决方案 > 如何在 if-else 语句中使用 C++20 的可能/不太可能属性

问题描述

这个问题是关于 C++20 的[[likely]]/[[unlikely]]特性,而不是编译器定义的宏。

本文档 ( cppreference ) 仅给出了将它们应用于 switch-case 语句的示例。这个 switch-case 示例与我的编译器 (g++-7.2) 完美编译,所以我假设编译器已经实现了这个特性,尽管它还没有在当前的 C++ 标准中正式引入。

但是当我像这样使用它们时:if (condition) [[likely]] { ... } else { ... },我收到了一个警告:

“警告:语句开头的属性被忽略 [-Wattributes]”。

那么我应该如何在 if-else 语句中使用这些属性呢?

标签: c++c++20gcc-warninglikely-unlikely

解决方案


根据Jacksonville'18 ISO C++ Report中的示例,语法是正确的,但似乎尚未实现:

if (a>b) [[likely]] {

10.6.6 可能性属性 [dcl.attr.likelihood]草稿


推荐阅读