#error在C代码中作用 #error 是 C 预处理指令作用是在编译到这一行时直接报错并把你写的提示文本打印出来。最常见写法是#error current branch: QL_AP_LIB_OC效果就是预处理器走到这里编译立即中断编译日志里打印 current branch: QL_AP_LIB_OC所以文档里让你“在每个条件编译分支加 #error”本质是在做一个很粗暴但很有效的分支探针。比如#if defined(QL_AP_LIB_OC) #error current branch: QL_AP_LIB_OC #elif defined(QL_AP_PKG) #error current branch: QL_AP_PKG #else #error current branch: default #endif然后你一编译终端里只会命中其中一个 #error你就知道当前实际走的是哪个宏分支。为什么这么做#if / #elif / #ifdef 的分支在代码里肉眼不一定容易判断宏可能是在更上层 CMake、编译器选项、头文件里间接定义的#error 能最快确认“当前到底走哪条路径”注意点也很重要#error 会让编译失败这是故意的只是为了排查当前分支看完日志后一定要删掉不然就永远编不过所以一句话说#error 人为制造一个带提示信息的编译错误用途 借编译日志确认当前命中了哪个条件编译分支