Compilerwarnung (Stufe 1) C4717

"Funktion": Rekursiv für alle Steuerungspfade, Funktion verursacht Laufzeitstapelüberlauf

Jeder Pfad durch eine Funktion enthält einen Aufruf der Funktion. Da es keine Möglichkeit gibt, die Funktion zu beenden, ohne sich selbst zuerst rekursiv aufrufen zu müssen, wird die Funktion nie beendet.

Im folgenden Beispiel wird C4717 generiert:

// C4717.cpp
// compile with: /W1 /c
// C4717 expected
int func(int x) {
   if (x > 1)
      return func(x - 1); // recursive call
   else {
      int y = func(0) + 1; // recursive call
      return y;
   }
}

int main(){
   func(1);
}