相关疑难解决方法(0)

什么是"recursive_init_error"异常?

我决定用计算得到的和局部静力学进行测试

void g() { std::cout << "init "; } 
void f() { 
  int z = 0; 
  y: z++; 
  static int x = 
    (g(), z == 1 ? ({ goto *&&y; 0; }) : 0); 
}

int main() { f(); std::cout << "!"; f(); }
Run Code Online (Sandbox Code Playgroud)

我想看看输出是否是"init init!".但令我惊讶的是,我没有得到那个输出,而是GCC优雅地处理它,在运行时输出:

init terminated by recursive_init_error: exception
Run Code Online (Sandbox Code Playgroud)

那个例外是什么?这是标准的例外吗?C++ 03还是C++ 0x?谢谢你的任何解释.

c++ initialization g++ exception

8
推荐指数
1
解决办法
1436
查看次数

基本的c问题-在c中声明静态变量时会发生什么?

我正在尝试学习在给定函数中定义静态变量时在c中如何工作。例如,当我编写以下代码时:

#include <stdio.h>
void inc() {
  static int c = 0;
  c++;
  printf("%d\n", c);
}

int main(void) {
  inc();
  inc();
  inc();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

预期的输出显然是:

1
2
3
Run Code Online (Sandbox Code Playgroud)

在第一次调用该函数时,将定义静态变量c并将其值设为0,这是很合理的。它已递增并打印。但是,在第二次询问inc()为什么要保留整数c而不将其设置为零的情况下,即使代码按字面意思说也是如此static int c = 0;。像第一次调用期间一样,编译器中的哪种机制阻止c将其值设置为零?

c static static-variables

1
推荐指数
1
解决办法
87
查看次数

标签 统计

c ×1

c++ ×1

exception ×1

g++ ×1

initialization ×1

static ×1

static-variables ×1