Main Content

MISRA C:2023 Rule 15.1

The goto statement should not be used

Since R2024a

Description

Rule Definition

The goto statement should not be used.

Rationale

Unrestricted use of goto statements makes the program unstructured and difficult to understand.

Troubleshooting

If you expect a rule violation but do not see it, refer to Diagnose Why Coding Standard Violations Do Not Appear as Expected.

Examples

expand all

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 */
    }
}

In this example, the rule is violated when goto statements are used.

Check Information

Group: Control Flow
Category: Advisory
AGC Category: Advisory

Version History

Introduced in R2024a