败犬日报 2025-10-27
败犬日报 2025-10-27
1. swift slice 的反直觉设计
swift
var hello = [10, 20, 30, 40, 50, 60]
var foo = hello[2..<5] // 索引范围是 2, 3, 4
foo[2] = 0
print(hello) // [10, 20, 30, 40, 50, 60]
print(foo) // [0, 40, 50]第一点是修改切片会触发拷贝,所以原数组不变。第二点是切片下标是原数组下标。
2. 同事写了 __xxx 的自定义函数
双下划线开头都是保留的(给标准库使用),用户使用是 UB。
可以用这个检查 https://clang.llvm.org/extra/clang-tidy/checks/bugprone/reserved-identifier.html。
3. 可控核聚变火了,上百家投资机构抢份额(文章)
https://mp.weixin.qq.com/s/XiQ0R0T2Mdx0XUiuzaVDbQ
4. p 是 void*,dynamic_cast<A*>((A*)p) 是什么神人代码
写的人可能是想检查 p 是不是指向 A 对象。但是这是不行的,编译器认为 dynamic_cast 没用就把它去掉了。
例如 GCC 15.2 -O3 的编译结果如下:
cpp
struct A {
~A() {}
};
A* f(void* p) { return dynamic_cast<A*>((A*)p); }
// f(void*):
// mov rax, rdi
// ret