c – XcodeLLVM catch子句与派生类型不匹配

c – XcodeLLVM catch子句与派生类型不匹配,第1张

概述在 gcc 4.2中,这有效: #include <stdexcept>#include <iostream>int main() { try { throw std::runtime_error("abc"); } catch (const std::exception& ex) { std::cout << ex.what(); } 在 gcc 4.2中,这有效:

#include <stdexcept>#include <iostream>int main() {    try {        throw std::runtime_error("abc");    } catch (const std::exception& ex) {        std::cout << ex.what();    }}

在Xcode 4.3.2(带有LLVM 3.1的iOS,-std = c 11)中,这会因为终止而失败,称为抛出异常,从未到达NSLog(…)行:

#include <stdexcept>int main() {    try {        throw std::runtime_error("abc");    } catch (const std::exception& ex) {        NSLog(@"%s",ex.what());    }    return UIApplicationMain(argc,argv,nil,nil);}

但这有效:

#include <stdexcept>int main() {    try {        throw std::runtime_error("abc");    } catch (const std::runtime_error& ex) {        NSLog(@"%s",nil);}

是什么赋予了?

解决方法 gcc是正确的:

15.3p3 A handler is a match for an exception object of type E if

… or the handler is of type cv T or cv T& and T is an unambiguous public base class of E,or …

这听起来像是一个xcode BUG(而且是一个令人惊讶的基本错误!)

总结

以上是内存溢出为你收集整理的c – Xcode / LLVM catch子句派生类型不匹配全部内容,希望文章能够帮你解决c – Xcode / LLVM catch子句与派生类型不匹配所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1045673.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存