败犬日报 2026-01-26
败犬日报 2026-01-26
1. 检查函数传参传错顺序
clang-tidy 有这个检查 https://clang.llvm.org/extra/clang-tidy/checks/bugprone/easily-swappable-parameters.html。
解决方法也很简单,把几个参数打包成一个结构体参数 xxxparams。
最近有一篇 C 语言提案 strong typedef,用来解决类似的问题。
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3320.htm
c
[[strong]] typedef int Width;
[[strong]] typedef int Height;
void draw_rect(Width w, Height h);
Width w = 3;
Height h = 4;
draw_rect(w, h);
// draw_rect(h, w);不过这个提案放到 C++ 的问题很多 https://discourse.llvm.org/t/rfc-clang-adding-strong-typedefs/88843,不用期待了。