主要内容

MISRA C:2025 Rule 15.7

R2026b

All if ... else if constructs shall be terminated with an else statement

Since R2026b

Description

All if ... else if constructs shall be terminated with an else statement 1 .

Rationale

Unless there is a terminating else statement in an if...elseif...else construct, during code review, it is difficult to tell if you considered all possible results for the if condition.

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

#include<stdbool.h>
void action_1(void);
void action_2(void);

void f1(bool flag_1, bool flag_2) {
	if(flag_1) {
		action_1();
	}
	else if(flag_2) {/* Non-compliant */ 
		action_2();
	}
}

In this example, the rule is violated because the if ... else if construct does not have a terminating else block.

Correction — Add else Block

To avoid the rule violation, add a terminating else block. This else block can, for instance, handle exceptions or be empty.

#include<stdbool.h>
bool ERROR = 0;
void action_1(void);
void action_2(void);

void f1(bool flag_1, bool flag_2) {
	if(flag_1) {
		action_1();
	}
	else if(flag_2) {
		action_2();
	}else{
		// Can be empty
		ERROR = 1; 
	}
}

Check Information

Group: Control Flow
Category: Required
AGC Category: Required
PQL Name: std.misra_c_2025.R15_7

Version History

Introduced in R2026b


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:2025

  • MISRA C++:2008

  • MISRA C++:2023

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