捕获而不尝试成功编译
catch without try compiling successfully
以下代码使用 g++ 版本 5.1.0 成功编译。 请注意成员函数 foo::bar()
中没有相应try
的catch
。 我想知道这种语法是否合法,如果是的话,它有什么影响?
struct foo
{
void bar()
{
}
catch (...)
{
}
};
int main ()
{
foo f;
f.bar();
return 0;
}
最初出现在构造函数的 Catch 块中,无需尝试
你举的例子,
struct foo
{
void bar()
{
}
catch (...)
{
}
};
...不是有效的标准C++。
它可能是 g++ 语言扩展。
您链接的问题中的catch
看起来像函数捕获块,除了这也需要一个try
关键字。
正如其他人很快指出的那样,引用的代码C++格式不正确。由于最近GCC 4/5/6分支中使用的重写C++解析器中的疏忽,它被允许通过。
我将其作为GCC Bug/PR c c ++/71909提交。从那里可以看出,刚刚对所有 3 个分支进行了提交,以确保只有在已经遇到匹配的函数try
块时才会接受函数catch
块。3天的周转时间,这很好:-)
感谢理查德提出这个问题!
相关文章:
- VS2017 版本 15.8.3 成功编译内联方法,而不返回所需值
- 如何在 c++ 中导入文件?以及如何成功编译它们?
- 奇怪的语法构造 - 应用于 typedef 的运算符 () 使用 VS2015 成功编译
- "template"关键字限定符是否会导致代码成功编译,但不同?
- 使用不带前缀"std"且不带"using namespace std;"的 std::sort() 成功编译
- 在 C++11 和 C++11 之前成功编译但行为不同的代码示例
- 有没有人在Windows7机器上成功编译过木瓜
- CGAL:如何成功编译和链接CGAL示例(在Mac OS X 10.9 Mavericks上)
- 使用 qmake 成功编译 SSE 指令(但 SSE2 不被识别)
- Socket C++程序在运行时成功编译崩溃
- 在 clang 中显式指定的参数无效,但在 gcc 中成功编译 — 谁错了?
- 为什么这个模板函数能够成功编译
- 无法使用Xcode成功编译boost
- Eclipse可以成功编译,但仍然会出现语义错误
- 成功编译节点模块并"Module did not self-register."
- Eclipse 给出错误"无法解析函数'MessageBoxA'",但仍然成功编译?
- C++ 成功编译,不包含<string>标题
- CGAL4.6 中成功编译的代码的编译错误
- 捕获而不尝试成功编译
- 为什么以下代码在VS2010中成功编译