Skip to content
败犬日报 2026-01-14

败犬日报 2026-01-14

1. C++ 有哪些奇技淫巧?(文章)

https://www.zhihu.com/question/27338446/answer/1994349850469365515

奇怪的知识增加了。

2. 关于 container_of 的未定义行为

container_of 在 C 里有争议(但是广泛使用,不会出问题),但是 C++ 里是没有争议的 UB(但也是广泛使用)。

一般来说 container_of 定义是 #define container_of(ptr, type, member) ((type *)((char *)(ptr) - offsetof(type, member))),UB 发生出在减法越界,往期聊过这个问题。

例如:

cpp
void unknown(int*);

struct A { int x, y, z; };

bool foo() {
    A a{0, 1, 2};
    unknown(&a.y);

    return a.x == 0 && a.z == 2;  // 可能优化为永真,当然事实上不会这么优化
}

3. 史上最糟糕的API:Windows API为何如此噩梦 | Lazo Velko Clips(视频)

https://www.bilibili.com/video/BV1A8rHBqEbF