主要内容

MISRA C++:2023 Rule 9.6.1

The goto statement should not be used

自 R2024b 起

描述

规则定义

The goto statement should not be used. 1

理由

不加限制地使用 goto 语句会增加程序逻辑的复杂度,使代码难以理解。此外,goto 语句可能会引入内存泄漏或错误释放资源。

Polyspace 实现

当您使用 goto 语句时,Polyspace 会报告违规。

故障排除

如果您预期会出现违规,而 Polyspace® 未报告该违规,请参阅诊断为何编码规范违规未按预期显示

示例

全部展开

每当这段代码使用 goto 语句时,Polyspace 都会报告违规。

void foo(void)
{
    int i = 0, result = 0;

label1:
    for (i; i < 5; i++) {
        if (i > 2) goto label2;     // Non-compliant
    }

label2: {
        result++;
        goto label1;                // Non-compliant
    }
}

检查信息

组:声明
类别:建议

版本历史记录

在 R2024b 中推出


1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.

The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:

  • MISRA C:2004

  • MISRA C:2012

  • MISRA C:2023

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.