交叉编译Boost

交叉编译Boost 交叉编译务必注意配置 sysroot ,网上个个都没配就说编出来了,演都不演,也不知道谁抄谁的文章。 开始 官网下载最新Boost文件包,我使用Yocto的交叉编译工具链在1.86.0版本测试是没问题的。 ...

2024-08-30 · 4 分钟 · 3rd

C++获取枚举元素数量

C++获取枚举元素数量 最近有个特殊需求,需要获取一个枚举类型的元素数量,于是学到了以下骚操作。 解释 操作源自网站stack overflow的一个提问《是否可以确定 c++ 枚举类的元素数量?》。 ...

2024-08-29 · 4 分钟 · 3rd

C++条件变量wait方法的误区

C++条件变量wait方法的误区 查看GitHub上的ThreadPool时发现以前理解上的一个误区。 wait的重载 C++条件变量用于等待的相关方法wait、wait_for、wait_until存在一个重载参数Predicate pred: 1 2 template< class Predicate > void wait( std::unique_lock<std::mutex>& lock, Predicate pred ); cppreference对其的说明: wait 导致当前线程阻塞直至条件变量被通知,或虚假唤醒发生。可以提供 pred 以检测虚假唤醒。 ...

2024-08-24 · 1 分钟 · 3rd

Reactor和Proactor

高性能网络模式:Reactor 和 Proactor 高效进行IO操作的方案,不外乎这二种。 说明 Reactor 是非阻塞同步网络模式,感知的是就绪可读写事件。 在每次感知到有事件发生(比如可读就绪事件)后,就需要应用进程主动调用 read 方法来完成数据的读取,也就是要应用进程主动将 socket 接收缓存中的数据读到应用进程内存中,这个过程是同步的,读取完数据后应用进程才能处理数据。 ...

2024-04-20 · 2 分钟 · 3rd

C++项目惯例

C++项目惯例 这里没有标新立异,对于老项目务必做到和历史代码风格统一,对于新项目做到和团队风格统一,对于没有明确要求或个人的项目做到前后风格一致。 我的风格 这里推荐一个Google 开源项目风格指南,比较全面;至少微软的指南我没找到有这个全面的。 ...

2024-04-16 · 4 分钟 · 3rd

C++的前向声明

C++的前向声明 有些时候,尤其是写会提供给其他人使用的库的时候,不想暴露过多细节,也不想让使用库的人引入不必要的头文件,可以使用前向声明避免在头文件引入其他头文件而可以使用其中的类型。 ...

2024-01-25 · 4 分钟 · 3rd

CMake注意事项

CMake注意事项 使用CMake时,不熟悉的内容千万不要想当然,主观臆断保不齐就被“特性”坑了。 注意事项 判断环境变量或字符串的误区 参考官方文档《if()》一节: A quoted string always evaluates to false unless: The string’s value is one of the true constants, or Policy CMP0054 is not set to NEW and the string’s value happens to be a variable name that is affected by CMP0054’s behavior. 带引号的字符串始终评估为 false ,除非: ...

2024-01-05 · 3 分钟 · 3rd

动态链接spdlog的cmake配置

动态链接spdlog的cmake配置 由于spdlog仅头文件形式编译会大大增加二进制文件大小,同时我有多个程序都要使用,为了节省资源,考虑使用动态链接,但是网上查了一圈都没有效内容,最后跟ChatGPT讨论出来了。以下给出cmake配置动态链接spdlog的办法。 ...

2023-12-05 · 1 分钟 · 3rd

C++什么时候应该用decltype

C++什么时候应该用decltype decltype通常应该被封装在通用(模板)库中,仅在完全必要的情况下使用。除此以外,非滥用的auto才是日常编程的语法糖。 1. 什么是decltype decltype 的名称是由 “declare” 和 “type” 组合而来,表示它用于声明类型。 ...

2023-12-05 · 3 分钟 · 3rd