# 宏、过程宏、FFI 与 no_std 检查清单

## 声明宏与过程宏

- `macro_rules!` 是否产生歧义匹配、重复求值副作用，或 hygiene 问题导致意外捕获外部标识符。
- 过程宏是否 Panic 于合法输入、或生成的代码隐含 `unsafe` 而未在文档中说明。

## FFI 与 ABI

- `extern` 块声明是否与真实 C ABI 对齐（调用约定、`repr(C)`、`#[repr(transparent)]`）。
- 空指针、长度、所有权传递是否在边界上检查；`CString` / 原始指针转换是否可能悬垂。
- FFI 边界是否允许 `panic!` 穿越到外部调用方；若存在 unwind 风险，是否在边界层显式兜底或约束为 abort。

## no_std 与条件编译

- `#[cfg(no_std)]` / `std` 特性门控是否与 `Cargo.toml` 特性一致，避免在 `no_std` 目标上误用 `std` 类型。
- `core` / `alloc` 使用是否在无分配环境误引 `alloc`。

若 diff 中无宏、FFI、`no_std` 相关改动，本维度在输出表中标记为不适用即可。
