c++ - 如何在 if-else 语句中使用 C++20 的可能/不太可能属性

标签 c++ c++20 gcc-warning likely-unlikely

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

本文档 (cppreference) 仅给出了将它们应用于 switch-case 语句的示例。 此 switch-case 示例与我的编译器 (g++-7.2) 完美编译,因此我假设编译器已实现此功能,尽管它尚未在当前 C++ 标准中正式引入。

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

"warning: attributes at the beginning of statement are ignored [-Wattributes]".

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

最佳答案

基于 Jacksonville’18 ISO C++ Report 中的示例语法是正确的,但是好像还没有实现:

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

10.6.6 Likelihood attributes [dcl.attr.likelihood] draft

关于c++ - 如何在 if-else 语句中使用 C++20 的可能/不太可能属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51797959/

相关文章:

c++ - 范围算法和标准算法之间的区别

c - 为什么 GCC 不对无法访问的代码发出警告?

c++ - 为什么我们不能从构造函数返回任何东西?

c++ - 修改内容并将其添加到XML文件

c++ - iterator_trait 的典型用例是什么

c++ - 标准容器,包含不同数量的元素,但没有动态内存分配

c++ - 什么是 C++20 的字符串文字运算符模板?

c++ - 使用 SFINAE 解决过载歧义

c - 如何从位域转换为指针?

c++ - gcc 警告和 gcc 错误消息之间的区别