This diagnostic rule is based on the software development guidelines developed by AUTOSAR (AUTomotive Open System ARchitecture).
Functions should not call themselves either directly or indirectly. Recursion can lead to elusive bugs such as stack overflow in the case of very deep recursion.
Example of non-compliant code:
#include <stdint.h>
uint64_t factorial(uint64_t n)
{
return n > 1 ? n * factorial(n - 1) : 1;
}
Recursive calls should be replaced with loops wherever possible. The following example demonstrates how this can be applied to the code above:
#include <stdint.h>
uint64_t factorial(uint64_t n)
{
uint64_t result = 1;
for (; n > 1; --n)
{
result *= n;
}
return result;
}
This diagnostic rule is classified as:
|
Was this page helpful?
Your message has been sent. We will email you at
If you do not see the email in your inbox, please check if it is filtered to one of the following folders: