Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352

    [C++]Eccezione non catturata da gcc ma catturata da mingw: bug del gcc?

    Ho questo esempio:

    ho un file c++ in cui c'è una funzione

    void lancia();

    che lancia un'eccezione; un file C con una funzione x(); che invoca lancia(). Il file C è compilato con gcc, il file cpp con g++ e poi linko tutto con g++.

    se eseguo x() all'interno di un blocco try/cacth

    Codice PHP:
    try{
        
    x();
    }
    catch(
    int e){
        
    cout << "\n\neccezioen catturata";

    l'eccezione non viene catturata se compilo il programma con gcc/g++ di linux (3.3.2), mentre viene catturata se lo compilo con minwg 3.3.1 su windows. La cosa ancora piu strana è che se compilo con g++ anche il file C allora l'eccezione viene catturata anche su linux.

    Come mai? E' un bug di gcc?

    Ecco il programma:

    Codice PHP:
    //file y.cpp

    #include <iostream>

    using namespace std;

    extern "C" void lancia(){
        throw 
    1;
    }

    extern "C" void x();

    int main(){
        try{
            
    x();
        }
        catch(
    int e){
            
    cout << "\n\neccezioen catturata";
        }
        
    cout << "\n\ncontinuo";
        return 
    0;

    Codice PHP:
    //file x.c

    void lancia();

    void x(){
        
    lancia();

    Qualcuno vuole fare una prova?

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Problema risolto: il file C compilato con gcc va compilato con l'opzione -fexceptions, che il mingw abilita di default

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.