C++ 时区转换别再手动加减小时:用 C++20 正确处理 zoned_time
在 C++20 里做时区转换,关键不是“加减几个小时”,而是把时间统一落到 `sys_time` 这个 UTC 时间点上,再交给 `std::chrono::zoned_time` 负责显示和换算。本文整理了编译链接、时区名格式、构造方式和异常处理几个最容易踩坑的点。
在 C++20 里做时区转换,关键不是“加减几个小时”,而是把时间统一落到 `sys_time` 这个 UTC 时间点上,再交给 `std::chrono::zoned_time` 负责显示和换算。本文整理了编译链接、时区名格式、构造方式和异常处理几个最容易踩坑的点。
在 CentOS 上用 C++ 做文件读写,最常见的做法是使用标准库 ` `。本文用一个可直接编译运行的示例,拆开说明文本写入、逐行读取、编译执行方式,以及几个实际开发中容易忽略的细节。 在 CentOS 里写 C++ 程序时,文件读写看起来只是几行代码,但真正容易出错的地方往往是打开失败判断、读取方式选择和关闭时机这些。
这篇文章围绕 C++ 关联式容器的实际使用场景,梳理了 `map`、`set` 及无序容器的选型依据,并总结查找、插入、迭代、并发访问和异常处理中的常见风险。读完后,你可以更稳妥地决定该用哪种容器,以及怎样把代码写得更安全。
在 Clang 做交叉编译时,`--target` 只负责生成目标架构代码,真正决定头文件、库文件和启动文件从哪里找的是 `--sysroot`。这篇文章把它为什么不能省、路径应从哪来、命令行和 CMake 里该怎么配,以及几类典型报错该如何定位,一次讲清楚。
多重定义错误本质上是链接阶段发现“同一个符号被定义了不止一次”。这类问题常见于头文件里直接写定义、多个源文件重复实现同名函数,或模板与内联函数使用不当。梳理触发场景、诊断线索和修复手法后,定位与处理都会快很多。
在 Linux 上写 C++ 程序时,错误处理通常集中在返回错误码、异常机制、`errno` 以及更现代的错误码封装几条路线上。它们看起来都能“报错”,但适用场景、可维护性和与系统接口的配合方式并不一样,选错了往往会让调试和扩展变得很麻烦。
这篇文章用一个最小可运行示例,演示在 CentOS 中把 Go 代码编译成可供 C/C++ 链接的静态库。重点包括 Go 环境安装、`//export` 与 `import "C"` 的写法、`-buildmode=c-archive` 的产物,以及 `gcc` 链接时 `-lmylib` 的命名规则。 很多项目并不是纯 Go 环境,尤其在 CentOS 服务器或老的 C/C++ 工程里,常见需求是把一段 Go 逻辑编成静态库直接接入。
在 CentOS 上部署 C++ 程序,核心不只是把二进制传到服务器,更在于编译环境、依赖库和进程托管三件事是否处理到位。本文按“准备工具链、编译、排查依赖、上线运行、接入 systemd”的顺序梳理整套流程,并补上生产环境下常见的维护建议。
这篇文章用一套最小可用流程,梳理了在 CentOS 上用 GCC/G++ 搭建 C++ 编译环境的方法,包括安装编译器、编写示例程序、编译运行、常用参数选择,以及 gdb、make、cmake 的基本用途,适合刚开始在 Linux 上做 C++ 开发的读者快速上手。
C++ 中“局部变量返回后会不会失效”取决于你返回的是值、引用还是指针。把几类最常见的返回方式拆开看,就能快速判断哪些天然安全,哪些会产生悬空引用,以及容器扩容、成员指针和智能指针分别要注意什么。
在 Linux 上看 C++ 线程“有没有在动”,关键不是轮询线程是否存在,而是抓住上下文切换这个更稳定的信号。本文把可用方案拆成快速统计、精准归因和常见误区三部分,说明什么时候该用 `getrusage(RUSAGE_THREAD, &ru)`,什么时候再上 `perf_event_open()`。
C23 把 C++ 的 `nullptr` 和 `nullptr_t` 带进了 C 语言,但这并不意味着 `NULL` 就过时了。本文从空指针常量的标准定义讲起,解释 C++ 为什么需要 `nullptr`,再回到 C23 评估它真正解决了什么问题,以及在兼容性和工程实践里是否值得用。