欢迎投稿,推荐或自荐文章/软件/资源等,评论区留言
本期文章由 HNY 啃萝卜 赞助
资讯
标准委员会动态/ide/编译器信息放在这里
编译器信息最新动态推荐关注hellogcc公众号 本周更新 2024-04-03 第248期
clion 新版本发布 https://www.jetbrains.com/clion/whatsnew/#v20241-apr-09
Results summary: 2024 Annual C Developer Survey "Lite" https://isocpp.org/files/papers/CppDevSurvey-2024-summary.pdf
一年一度的调查问卷报告出了,样本有点少,说几个有意思的数据
- • c 五年以上经验 占80% 大家都是老登
- • 大部分使用c 17特性
- • 主要痛点在环境/脚手架/编译时间/调试 module什么时候能好用我操了
- • c 20 特性 concept/coroutine/module concept接受程度最高(module没法用吧,coroutine主要是传染性,不想改代码)
感兴趣的可以自己看一下,大部分都是图
文章
move性能下降?
群里聊到小红书看到的一个move优化不生效的问题
https://quick-bench.com/q/P-nqRmfT4ChFdNHHd9NCFALRRDI
经过群里的压测比较,并没有明显差异
大家有其他见解也可以补充
How not to check array size in C https://pvs-studio.com/en/blog/posts/cpp/1112/
省流:用std::size
c里有一种检查数组长度的方法 sizeof(a) / sizeof(a[0])
现在是2024年,有没有一种优雅的方法呢
显然你会说 用vector/array ,先别走这么远,先来个尝试
代码语言:javascript复制template <typename T, size_t N>
char (&ArraySizeHelper(T (&array)[N]))[N];
#define countof(array) (sizeof(ArraySizeHelper(array)))
看懂发生了什么吗,这个ArraySizeHelper是个函数模版,接受T(&)[N] 返回一个char(&)[N] 然后你就拿到了N
为什么不实现,我靠,你要是实现了玩意真有傻逼同事用咋办,就在sizeof里用用得了
多么扭曲的写法,想出这玩意的人排便通畅吗,就不怕被同事打吗
后来到了c 11 咱们终于现代了
代码语言:javascript复制template <typename T, size_t N>
constexpr size_t countof(T (&arr)[N]) noexcept
{
return N;
}
都支持数组,顺便给vector啥的也支持上
代码语言:javascript复制template <typename Cont>
constexpr auto countof(const Cont &cont) -> decltype(cont.size())
noexcept(noexcept(cont.size()))
{
return cont.size();
}
我操,是不是重新发明了 std::size https://en.cppreference.com/w/cpp/iterator/size 哈哈c 17才支持
两个指针怎么办,可能你会说自己算被,用std::distance
上一期我们讲的范围问题还记得吗,转成range 拿range.size是最合理的,不要自己算,错误会被忽略掉
译-Debugging a futex crash
之前发过了,没看的再看看哈,这个思路还是挺清晰的
LLVM IR 初探(0x00) alloca / 基本块 / getelementptr 踩坑 https://zhuanlan.zhihu.com/p/690032669
学学LLVM
C 20 modules and Boost: an analysis https://anarthal.github.io/cppblog/modules
module现状调查,哈哈,没有能用的大项目,没错,2020的东西到2024年也没做好
Abstract Strategy Tree https://atlas-blog.vercel.app/ast
理解不了,有看懂的可以讲讲,我觉得有点为了秀而秀,没必要
The case of the exception that a catch (…) didn’t catch https://devblogs.microsoft.com/oldnewthing/20240405-00/?p=109621
TLDR 有两个地方有异常,但只catch一处
The Simple Beauty of XOR Floating Point Compression https://clemenswinter.com/2024/04/07/the-simple-beauty-of-xor-floating-point-compression/
TODO 没看懂
C 协程——等待的艺术awaitable https://zhuanlan.zhihu.com/p/683764594
看一乐
开源项目介绍
- • https://github.com/lhmouse/asteria 一个脚本语言,可嵌入,长期找人,希望胖友们帮帮忙,也可以加群753302367和作者对线
- • https://github.com/zeus-cpp/expected 实现了expect c 17版本,我怎么记得有人实现过了
- • https://github.com/karpathy/llm.c 一个llm简单实现
- • https://github.com/pika-org/pika 一个sender reciver实现,感觉是fork的hpc然后拼一下std::exec