- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在测试最近在 C++17 下测试期间出现的问题。这是源文件:
$ cat test.cxx
#if __EXCEPTIONS && __has_feature(cxx_exceptions)
# include <exception>
# define CXX17_EXCEPTIONS 1
#endif
void Foo()
{
#if defined(CXX17_EXCEPTIONS)
if (std::uncaught_exceptions() == 0)
#endif
{
int x = 0;
}
}
并在 OS X 10.8 或 10.9 上使用 Macports 编译器编译它:
$ /opt/local/bin/clang++-mp-5.0 -std=gnu++17 test.cxx -c
test.cxx:9:14: error: 'uncaught_exceptions' is unavailable: introduced in macOS 10.12
if (std::uncaught_exceptions() == 0)
^
/opt/local/libexec/llvm-5.0/include/c++/v1/exception:130:63: note:
'uncaught_exceptions' has been explicitly marked unavailable here
_LIBCPP_FUNC_VIS _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS int uncaught_e...
^
1 error generated.
/opt/local/bin/clang++-mp-5.0
也遇到了这个问题。这似乎不是一次性的问题。 4.0 拒绝 -std=gnu++17
所以我无法进一步测试。
根据 Clang 3.6 Release Notes ,我相信我对 std::uncaught_exceptions()
使用了正确的测试:
To reliably test if C++ exceptions are enabled, use __EXCEPTIONS && __has_feature(cxx_exceptions), else things won’t work in all versions of Clang in Objective-C++ files.
我可能无法包含 Apple 特定的头文件,因此我无法针对 OS X 10.12 进行测试。其他人遇到过这个问题,但我还没有找到合适的解决方案。比如这个bug report有同样 Unresolved 问题。
有没有办法在包含标准 C++ 预处理器宏和功能测试的 Apple 平台上解决此问题?如果是这样,方法或测试是什么?
$ /opt/local/bin/clang++-mp-6.0 --version
clang version 6.0.1 (tags/RELEASE_601/final)
Target: x86_64-apple-darwin13.4.0
Thread model: posix
InstalledDir: /opt/local/libexec/llvm-6.0/bin
$ /opt/local/bin/clang++-mp-5.0 --version
clang version 5.0.2 (tags/RELEASE_502/final)
Target: x86_64-apple-darwin13.4.0
Thread model: posix
InstalledDir: /opt/local/libexec/llvm-5.0/bin
最佳答案
这里的问题是 Mac OS 10.12 之前的运行时库 (libc++.dylib
) 不包含 std::uncaught_exceptions()
的定义。如果您尝试在这些平台上使用它,则会导致链接器错误。因此,我们会在编译时警告您这会失败。这与异常可用/不可用无关:它与特定功能不可用有关。
关于macos - 错误 : 'uncaught_exceptions' is unavailable: introduced in macOS 10. 12,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53253553/
我刚刚注意到了 http://en.cppreference.com/w/cpp/error/uncaught_exception C++17 将用 std::uncaught_exceptions(
什么是 uncaught_exception 的好用例? 最佳答案 Herb Sutter 似乎给出了很好的建议 here .他不知道它有什么好的用途,并说在某些情况下它看起来很有用,但实际上并没有用
我有以下问题。 我有回收的数据库连接(放回池中)。 例如: { session sql(conn_str); // take connection from pool sql.exec("inse
这个问题在这里已经有了答案: How to catch segmentation fault in Linux? (5 个答案) Catching access violation exceptio
介绍 有posts和 articles关于 std::uncaught_exception 的用法和原理。 Functionality这个函数提供的归结为 std::uncaught_exceptio
有些文章的结论是“永远不要从析构函数中抛出异常”,“std::uncaught_exception() 没有用”,例如: http://www.gotw.ca/gotw/047.htm (作者:赫伯·
Herb Sutter 在他的文章中 http://www.gotw.ca/gotw/047.htm指出我们不能在析构函数中使用uncaught_exception, // Why the wron
人们强烈反对从析构函数中抛出异常。取this answer举个例子。我想知道是否std::uncaught_exception()可用于可移植地检测我们是否由于某些其他异常而处于展开堆栈的过程中。 我
我在 DLL 中有一个类,它有一个析构函数来检查 std::uncaught_exception()。如果在可执行文件的 try/catch block 中使用,如果抛出异常,它不会说 true。 下
C++ 标准库似乎有 std::uncaught_exception , 微软有这个 exact function . 但微软也有__uncaught_exception .我在文档中看不到任何显着差
我正在测试最近在 C++17 下测试期间出现的问题。这是源文件: $ cat test.cxx #if __EXCEPTIONS && __has_feature(cxx_exceptions) #
我注意到我的 Mac 上的 stock libc++ 中缺少 std::uncaught_exceptions 符号: $ clang++ -v; otool -L /usr/lib/libc++.d
LuaJIT 手册 states : Lua errors can be caught on the C++ side with catch(...). The corresponding Lua e
这个问题在这里已经有了答案: Scope(failure) in C++11? (2 个回答) 关闭9年前。 毫无疑问,很多人都熟悉 Alexandrescus 先生的 ScopeGuard 模板(现
我是一名优秀的程序员,十分优秀!