遵循MISRA C与CERT C规则:单返回函数else无内容时的逻辑完整性处理
满足MISRA C与CERT C规范的写法
要同时符合MISRA单返回语句和CERT逻辑完整性要求,核心是显式体现对所有分支的考虑,避免因省略else分支被判定为逻辑遗漏。以下两种写法都能满足规范:
写法一:保留原判断逻辑,显式添加空else分支并注释
static int32_t SomeFunc() { int32_t retval = PROJECT_ERROR_GENERIC; retval = ChildFuncOne(); if (retval == PROJECT_SUCCESS) { retval = ChildFuncTwo(); } else { /* ChildFuncOne执行失败时无需特定操作,直接进入通用清理 */ } // Common cleanup return retval; }
写法二:反转判断条件,优先处理失败分支
static int32_t SomeFunc() { int32_t retval = PROJECT_ERROR_GENERIC; retval = ChildFuncOne(); if (retval != PROJECT_SUCCESS) { /* ChildFuncOne执行失败时无需特定操作,直接进入通用清理 */ } else { retval = ChildFuncTwo(); } // Common cleanup return retval; }
规范适配说明
- MISRA C合规性:两种写法都保持了函数仅有一个
return语句,符合单返回规则。 - CERT C合规性:通过显式写出else分支并添加注释,明确表明开发者已考虑到所有分支情况,并非疏忽遗漏,满足逻辑完整性要求。
内容的提问来源于stack exchange,提问作者foreverska
相关产品推荐
相关产品推荐

