【问题标题】:Static variable inside sub-scope [duplicate]子范围内的静态变量
【发布时间】:2019-07-17 20:07:14
【问题描述】:

这样的代码是错误的还是正常的:

void fun()
{
    if ( CONDITION )
    {
        static MyClass myclass;
        ...
    }
    ...
}

也就是说,静态变量可以在局部范围内声明吗?

【问题讨论】:

  • 是的,局部作用域中的静态变量在第一次进入作用域时被初始化,但直到程序退出才被销毁。
  • 是的。所有带有静态 linkage 的局部变量的工作方式都是一样的,不管它们嵌套了多少层。

标签: c++ static


【解决方案1】:

根据 C++ 标准,它是完全有效的。在某些情况下,这样做可能是有问题的/不好的做法,但它是有效且定义明确的。

【讨论】:

    【解决方案2】:

    当然可以。通过尝试编译代码,您可以很容易地看到这一点。

    【讨论】:

      猜你喜欢
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      相关资源
      最近更新 更多