boost::asio 库版本,C/C++代码编译兼容性

devtools/2024/9/24 11:23:15/

1、boost::asio::spawn 开启有栈(stackful)协同程序,版本改进及限制

      >= boost_1_80 版本应采用以下方式。

                auto f = [self, this](const boost::asio::yield_context& y) noexcept {bool success_ = do_handshake(y);if (!success_) {close();}else {clear_timeout();}};// https://original.boost.org/doc/libs/1_80_0/doc/html/boost_asio/overview/composition/spawn.html// https://original.boost.org/doc/libs/1_79_0/doc/html/boost_asio/overview/composition/spawn.html
#if BOOST_VERSION >= 108000boost::asio::spawn(*context_, f, boost::asio::detached);
#elseboost::asio::spawn(*context_, f);
#endif

     <= boost_1_85 版本可以采用缺省 “boost::asio::spawn(*context_, f);” 方式,而之上版本,代码不在兼容此方式。

     之上版本,人们必须显示得提供:boost::asio::detached,它是一个用于辅助 boost::asio 内部泛型模板元编程,在编译器期确定调用行为得。

2、boost::uuids::uuid 

            boost::uuids::uuid uuid;
#if BOOST_VERSION >= 108600*(Int128*)&uuid = ppp::net::Ipep::HostToNetworkOrder(guid);
#else*(Int128*)uuid.data = ppp::net::Ipep::HostToNetworkOrder(guid);
#endif

   <= boost_1_85 版本,可以直接设置 data 字段,它是一个占16个字节的数组,而在 boost_1_86 及以上版本,它是一个单独定义的数据结构,而不在是一个数组。

3、boost::asio >= 1_86_0 及以上版本,所有的 async_xxx、如:async_read、async_write 函数的事件回调函数,都不可以在返回值,否则编译警告。

     大家惯性,喜欢在 async_read 的回调函数之中,返回 BOOL/INT的值,仍旧是可行的,只是会存在大量的库编译警告。

     所以,这要求大家必须修改自己的代码,才可以消除编译警告,当然,强制屏蔽编译的警告输出也是可行的,但这可能带来不可预测的风险。


http://www.ppmy.cn/devtools/98512.html

相关文章

pnpm install 后还是没有生成 pnpm-lock.yaml 文件

报错信息&#xff1a; ERR_PNPM_CONFIG_CONFLICT_LOCKFILE_ONLY_WITH_NO_LOCKFILE Cannot generate a pnpm-lock.yaml because lockfile is set to false 问题&#xff1a; 我删除了pnpm-lock.yaml文件&#xff0c;以便获得最新的依赖项 运行 pnpm i 命令&#xff0c;以便生…

Python中类的使用5

在Python中类的使用4-CSDN博客中提到&#xff0c;子类继承父类所有的属性和方法。对于子类来说&#xff0c;如果继承的方法不符合子类的要求&#xff0c;可以对其进行重写。相当于儿子从父亲那里继承了一件衣服&#xff0c;但是这个衣服的款式比较老旧&#xff0c;可以把这件衣…

二维中,若直线上两点q1和q2,输入一个点P1,求P1在直线上的垂点

一、计算过程 在二维空间中&#xff0c;若给定直线上两点Q1和Q2以及一个点P1&#xff0c;要求出点P1在直线上的垂点&#xff0c;可以通过以下步骤进行&#xff1a; ‌1、判断点P1是否在直线q1-q2上‌&#xff1a; 首先&#xff0c;需要判断点P1是否位于直线Q1-Q2上。这可以通过…

32 - I. 从上到下打印二叉树

comments: true difficulty: 中等 edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9832%20-%20I.%20%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91/README.md 面试题 32 - I. 从上到下打印二叉树…

前端(Vue)headerSearch(页面搜索)通用解决方案 及 原理

简介 击后弹出输入框输入框可以输入页面的索引&#xff0c;比如项目中包含了文章相关的点击后可以进入对应界面同时也支持英文索引 原理 headerSearch 是复杂后台系统中非常常见的一个功能&#xff0c;它可以&#xff1a;在指定搜索框中对当前应用中所有页面进行检索&#…

【大模型微调训练与实操】微调 Llama 3 并在本地使用

目标&#xff1a;根据医患对话数据集对 Llama 3 进行微调&#xff0c;创建一个专门针对医疗对话的模型。在合并、转换和量化模型后&#xff0c;它将可以通过 Jan 应用程序供本地私人使用。 在本教程中&#xff0c;我们将学习如何在医学数据集上微调 Llama 3。我们还将通过 Ja…

算法基础及例题

1、双指针 维护区间信息、子序列匹配、利用序列有序性、单项链表找环双指针 - OI Wiki (oi-wiki.org) 盛最多水的容器https://leetcode.cn/problems/container-with-most-water/ public class Solution {public int maxArea(int[] height) {int l 0, r height.length - 1;int…

如何制作统信UOS启动盘?

如何制作统信UOS启动盘&#xff1f; 一、下载UOS系统安装镜像二、在UOS系统环境下制作启动盘步骤一&#xff1a;准备U盘步骤二&#xff1a;打开启动盘制作工具步骤三&#xff1a;选择ISO镜像文件步骤四&#xff1a;选择安装介质并格式化步骤五&#xff1a;等待制作完成 三、在W…