C 字符串、内存归属和错误返回
写 FFI 时,extern "C" 只是入口。
真正容易出事故的地方通常是三类:
C 字符串到底是不是有效的 NUL 结尾字符串
返回的指针由谁分配、由谁释放、用哪个函数释放
错误是整数码、输出参数,还是错误文本
C 代码里这些靠接口文档和团队约定维护。Rust 可以把一部分规则包进类型,但跨语言边界本身仍然要设计清楚。
阅读更多写 FFI 时,extern "C" 只是入口。
真正容易出事故的地方通常是三类:
C 字符串到底是不是有效的 NUL 结尾字符串
返回的指针由谁分配、由谁释放、用哪个函数释放
错误是整数码、输出参数,还是错误文本
C 代码里这些靠接口文档和团队约定维护。Rust 可以把一部分规则包进类型,但跨语言边界本身仍然要设计清楚。
阅读更多C 开发者很熟悉这种错误处理方式:
int read_config(const char *path, struct Config *out);
函数返回 0 表示成功,非 0 表示失败;真正的结果通过输出参数写回。系统调用还会用 -1 加 errno。资源多一点时,再配合 goto cleanup 收尾。