MISRA C:2012 Rule 17.11
A function that never returns should be declared with a
_Noreturn function specifier
Since R2024a
Description
A function that never returns should be declared with a
_Noreturn function specifier1
.
This rule comes from MISRA C™: 2012 Amendment 3.
Rationale
If a function that does not return to its caller is not declared with a _Noreturn specifier, it is unclear whether it intentionally does not return, or does not return due to an error in the program logic.
Polyspace Implementation
The rule checker reports a violation if there are no return paths from a function to its caller but the function is not declared with a _Noreturn specifier.
As an exception, Polyspace® does not report a violation if main() is not declared
as _Noreturn.
This checker reports a rule violation only if you specify the C language standard as C11 or later for the Bug Finder analysis. For more information, see C standard version (-c-version).
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
Check Information
| Group: Functions |
| Category: Advisory |
| AGC Category: Advisory |
PQL Name: std.misra_c_2012.R17_11 |
Version History
Introduced in R2024a1 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.