You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

遵循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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:05:18