コンパイラの警告 (レベル 1) C4717

'function': すべてのコントロールのパス、関数を回帰するとランタイム スタック オーバーフローが発生します。

関数がたどるいずれのパスにも、その関数への呼び出しが存在します。 最初に自己が再帰的に呼び出されてしまって関数から抜ける手段がないため、関数がいつまでも終了しません。

次の例では C4717 が生成されます。

// 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);
}