2016-03-29 22 views
2

Ben çıktı üretmesi Linux üzerinde gcc 5.3 çalışırcout gösterilmeyen

That was unexpected 

görmüyorum, Windows 10 üzerinde Visual Studio 2015 bu kodu çalıştırdığınızda.

class X {}; 
class Y {}; 
class Z : public X {}; 
class W {}; 

void f() throw(X, Y) // list what exceptions can be thrown 
{ 
    int n = 0; 
    if (n) throw X(); // OK 
    if (n) throw Z(); // also OK 
    throw W(); // will call std::unexpected() 
} 

int main() { 
    std::set_unexpected([] { 
     std::cout << "That was unexpected" << std::endl; 
     std::abort(); 
    }); 
    f(); 
} 
+0

Bunun yerine "std :: cerr" yazmayı deneyebilirsiniz. –

+0

Std :: cerr'i şimdi denedim ama hala çalışmıyor. – Damian

cevap

4

Visual C++ uygulamaya asla istisna özellikler, sözdizimi kabul edilmiş olmasına rağmen. Her neyse, C++ 11 ve sonrasında kullanımdan kaldırılmışlardır.

Belki de Windows C++ derleyicisi ana uyumsuzluğunun bir sonucu olarak. Aynı şekilde


, ben Visual C hatırladığım kadarıyla ++ std::uncaught_exception hiç uygulanmamış, ama bunların Pek emin değilim. Kullanmadan ve güvenmeden önce kontrol etmeye değer. Ve hellip; Doc-kontrol: the documentation Visual C++ 2015

” cihazlarda, uncaught_exception yalnızca Windows CE üzerinde

Yani Windows Mobile 2005 platformları dahil 5.00 ve daha yüksek sürümleri desteklenir belirtiyor Masaüstü platformları açıkça destekleniyor.

+1

Ayrıca, Windows Clang aynı – OMGtechy

+0

yapar Tamam, belki MS doc yanlış çünkü Windows 10 masaüstü platformunda çalışmıyor gibi görünüyor. Bunu bulduğunuz için teşekkür ederiz! – Damian

+0

@Damian: Yani std :: uncaught_exception' anlamına mı geliyor? –

İlgili konular