[C++] 修复 CLion(clang-tidy) + C++20协程 的语法提示错误

CLion(clang-tidy) + C++20协程


截至到现在2023年3月8日, CLion仍然不直接支持协程, 百度和谷歌上也无相关直白的解决方案, 急死个人. 今年都已经是2023年了, C++23都定稿了, CLion居然还不直接支持协程. 谷歌上关于CLion使用C++协程时出现错误的语法提示的bug的反馈已经open好多年了, 要是等到我买的个人的CLion许可证到期时, CLion还不修复这些bug, 劳资就不续费了🤯.

问题


目前在CLion中直接使用协程会弹出这个提示.

当前内置的clang-tidy版本为15.0.0. 网上稍微查找一下能找到16预览版本的clang-tidy. LLVM 16.0.0-rc3, 内有16.0.0版本的clang-tidy, 然而更换新版本的clang-tidy并不能解决协程语法提示不正确的问题. (我看多半可能还是CLion的问题).

解决方法

  1. 缺失__cpp_impl_coroutine
    CLion does not appear to recognize that “__cpp_lib_coroutine” is defined.

在包含yvals_core.h头文件前手动定义__cpp_impl_coroutine宏即可修复
在这里插入图片描述
该宏可以修复co_await运算符不可用的问题

(瞧这死傲娇clang-tidy, 还挺不情愿)
在这里插入图片描述

  1. clang-tidy自行定义__clang__宏导致ASIO_HAS_CO_AWAIT未能设为1

编译器是MSVC, 语法高亮都能察觉到编译器是MSVC, 唯独clang-tidy傻乎乎地不能察觉.
在这里插入图片描述
这里有两种修复方法, 一种是手动移除__clang__宏, 另一种是手动强制定义ASIO_HAS_CO_AWAIT
个人推荐后者, 可以免修改asio源码.

总结

在包含一切头文件前用以下预编译指令修复一下即可
在这里插入图片描述
也可以放到修复性头文件里让所有源码首先包含一下
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值