让 Clangd 支持 GCC 的 C++23 Std Module
本文主要记录在 Arch Linux 上使用 GCC 15.2.1 编译器编译包含 import std; 的 C++23 标准模块(std module)代码时,如何让 Clangd 正常工作——即 import std; 不再被标记为红色波浪线提示“Module 'std' not found”,并且能够正常提供其中符号的悬停(Hover)提示。
本文主要记录在 Arch Linux 上使用 GCC 15.2.1 编译器编译包含 import std; 的 C++23 标准模块(std module)代码时,如何让 Clangd 正常工作——即 import std; 不再被标记为红色波浪线提示“Module 'std' not found”,并且能够正常提供其中符号的悬停(Hover)提示。
以下内容是《ISO/IEC 14882:2024》[7.2.1] Value category [basic.lval] 部分的中文翻译。标准文件可从此仓库下载。
📖 解释:创建一个新的套接字,返回一个文件描述符用于后续网络通信.
第 1 个参数 🔑:协议族,指定通信协议类型.
- 示例:AF_INET(IPv4协议)、AF_INET6(IPv6协议)、AF_UNIX(本地进程间通信).
详细的讲解请看 CppMore 里缪大佬的 这篇文章。
此处学习一下其中的使用 递归继承 技巧实现简易元组类这个例子。
直接 "Show me the code!"
本文简要记录笔者在 Arch Linux 上编译一个部分支持 C++ 反射的 clang 编译器的过程。
期待 Reflection 能正式被编译器实现的那一天。 :)
本次实验受群友 Yiran Wang 启发。
GitHub 仓库在 这里,有关这个编译器的介绍详情请看仓库(默认是 purpose 分支,代码在 p2996 分支上)。
在 C++ <chrono> 库中,有如下判断闰年的算法:
class year
{
private:
short _M_y;
public:
constexpr bool
is_leap() const noexcept
{
return (_M_y & (_M_y % 25 == 0 ? 15 : 3)) == 0;
}
};
根据源代码的注释,总结一下优化思路:
先在本地试一试修改 gcc 的翻译吧. 新建一个用来折腾的文件夹 ~/test/.
下载 Translation Project 上的最新版 gcc 简体中文翻译文件. 截至发稿时,gcc 最新版本为 14.2.0 版.