【发布时间】:2011-08-06 13:39:39
【问题描述】:
我决定使用计算的 goto 和本地静态进行测试
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(); }
我想看看输出是否是“init init!”。但令我惊讶的是,我没有得到那个输出,而是 GCC 优雅地处理它,在运行时输出:
init terminated by recursive_init_error: exception
那是什么异常?它是标准例外吗? C++03 还是 C++0x?感谢您的任何解释。
【问题讨论】:
-
我认为 {} 不能出现在 () 中。
-
@Eric 谢谢,我添加了 gnu-c++
-
@dauphic:我认为你通过对他的内容投票而不是基于你的粉丝主义来获得更大的帮助。这也是应该的。
标签: c++ exception initialization g++