MISRA C:2012 详解 · 专栏03:表达式与求值(第 11~14 章)
覆盖第 11~14 章共23 条规则:指针类型转换、表达式、副作用与求值顺序、控制语句表达式。
这一篇是 MISRA 的「修罗场」——指针强转和副作用是 C 语言里最「自由」也最危险的两个领域,MISRA 在这里下手最狠。
第 11 章 · 指针类型转换(Pointer Type Conversions)
指针强转是「用得好是黑科技,用不好是内存炸弹」。MISRA 的态度很明确:能不强转就别强转,实在要转也得挑「安全」的转。
Rule 11.1 函数指针与其他任何类型之间不得进行转换
等级:必需(Required) |可判定:Decidable |cppcheck:🔧 工具可检
规则:函数指针不能和void*、整数、其他指针类型互相转换。
为什么:函数指针和数据指针在有些架构上大小、地址空间