一个鲜为人知但几乎从未使用过的C++特性的声明是:
void foo();
Run Code Online (Sandbox Code Playgroud)
一种可能的法律定义可能是:
void foo() try {
throw 42;
}
catch(...) {
}
Run Code Online (Sandbox Code Playgroud)
这里包含的整个函数实现在try/ catchpair中,这似乎与允许它相似.
那是合法的int main()吗?例如:
int main() try {
throw 42;
}
catch(...) {
}
Run Code Online (Sandbox Code Playgroud)
main,n3290§3.6.1 的规则主要讨论它应该采取什么样的论据以及它返回什么 - 它们似乎并没有明确地禁止它,因为它们与你可能想要尝试的各种其他奇怪事物(例如联系)一样.
这是合法的,定义明确吗?
请注意,此函数没有"{"和"}"正文.只是一个try/catch块:
void func( void )
try
{
...
}
catch(...)
{
...
}
Run Code Online (Sandbox Code Playgroud)
这是故意的C++的一部分,还是这是一个g ++扩展?
除了绕过1级{}之外,还有什么目的吗?
在遇到http://stupefydeveloper.blogspot.com/2008/10/c-function-try-catch-block.html之前,我从未听说过这个.