☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

递归地定义和初始化静态对象

C++-Undefined-Behavior-51
目录 › next › previous

示例:

int foo(int i) {
    if (i < 100) {
        static int s = foo(2 * i);   // Undefined behavior
        return s;
    }
    return i;
}

例中静态局部变量 s 的初始化需要递归调用所属函数,是否会产生多个 s 的实例以及是否能正常结束递归,均是未定义的。

依据

ISO/IEC 14882:2003 6.7(4)-undefined ISO/IEC 14882:2011 6.7(4)-undefined
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.