美文网首页
2019-05-28:Apple对C++

2019-05-28:Apple对C++

作者: memset | 来源:发表于2019-05-28 22:35 被阅读0次
    • 事情是这样的:我在项目中用到<any>和any_cast,在Windows和Android上编译都是没有问的,但到了iOS这边报错:
      error: call to unavailable function 'any_cast': introduced in iOS 12.0
    • 在网上搜到了https://stackoverflow.com/questions/44217316/how-do-i-use-stdoptional-in-c。其实是同样的问题:
      optional.cpp:17:21: error: call to unavailable member function 'value':
    • 这些函数可能会抛出一个bad_xxx_access的异常。然后这个异常的what方法,不是实现在头文件里面的,而是实现在cpp里面的(iOS使用llvm):https://github.com/llvm-mirror/libcxx/blob/master/src/any.cpp
      。相比之下,gcc的的实现是在头文件里面的:https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/any
    • 也就是说,iOS的bad_xxx_access异常是实现在libc++.dylib里面的。每个版本的iOS系统的libc++.dylib都是不一样的。在iOS 12.0及以上,才有实现bad_xxx_access::what函数。如果DEPLOYMENT_TARGET小于12.0的话,就会编译不通过。
    • 解决方案:使用不会抛异常的版本


      image.png

    相关文章

      网友评论

          本文标题:2019-05-28:Apple对C++

          本文链接:https://www.haomeiwen.com/subject/gatstctx.html