编译器警告(等级 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);
}