abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 11:55 | IT novinky

    Ministerstvo průmyslu a obchodu propaguje Microsoft. Ten ve spolupráci s Ministerstvem průmyslu a obchodu spouští AI National Skilling Plan v ČR. "Iniciativa Microsoftu přináší konkrétní a praktickou podporu právě tam, kde ji nejvíc potřebujeme – do škol, firem i veřejné správy.", říká ministr průmyslu a obchodu Lukáš Vlček.

    Ladislav Hagara | Komentářů: 7
    dnes 10:55 | Zajímavý projekt

    Jste český ISP? Vyplněním krátkého dotazníku můžete pomoci nasměrovat vývoj nové generace routerů Turris Omnia [𝕏].

    Ladislav Hagara | Komentářů: 4
    dnes 01:33 | IT novinky

    Celkové tržby společnosti Canonical za rok 2024 byly 292 milionů dolarů (pdf). Za rok 2023 to bylo 251 milionů dolarů.

    Ladislav Hagara | Komentářů: 1
    dnes 01:22 | Nová verze

    Byla vydána verze 1.88.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    dnes 01:11 | Nová verze

    Distribuce Tails specializující se ochranu online soukromí uživatele byla vydána ve verzi 6.17. Mimo jiné aktualizuje Tor Browser (14.5.4) a opravuje několik chyb.

    Fluttershy, yay! | Komentářů: 0
    včera 21:11 | Nová verze Ladislav Hagara | Komentářů: 0
    včera 13:11 | IT novinky

    Město Lyon posiluje svou digitální suverenitu a postupně nahrazuje software od společnosti Microsoft bezplatnými alternativami, zejména OnlyOffice pro kancelářské aplikace a Linux a PostgreSQL pro systémy a databáze.

    Ladislav Hagara | Komentářů: 9
    včera 11:44 | Zajímavý projekt

    Evropská občanská iniciativa Stop Destroying Videogames se snaží o to, aby vydavatelé, kteří spotřebitelům v Evropské unii prodávají videohry nebo na ně udělují licence, měli povinnost tyto hry ponechat ve funkčním (hratelném) stavu i po ukončení podpory ze své strany. Podpořit podpisem tuto iniciativu můžete v Systému pro online sběr podpisů.

    trekker.dk | Komentářů: 5
    včera 11:22 | Komunita

    Mozilla oficiálně ukončila svůj již několik let mrtvý projekt DeepSpeech pro převod řeči na text.

    Ladislav Hagara | Komentářů: 2
    včera 05:22 | Komunita

    Krátce po oficiálním oznámení forku X.Org Xserveru s názvem XLibre Xserver byl ve Fedoře předložen návrh, aby byl X.Org Xserver nahrazen tímto XLibre Xserverem. Po krátké ale intenzivní diskusi byl návrh stažen.

    Ladislav Hagara | Komentářů: 25
    Jaký je váš oblíbený skriptovací jazyk?
     (58%)
     (29%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 318 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Dotaz: Chycení výjimky v C

    29.12.2015 20:41 Jardík
    Chycení výjimky v C
    Přečteno: 667×
    Zahrávám si s myšlenkou chytit např. C++ výjimku v C kódu. Chápu, že to nebude přenositelné. Četl jsem nějakou dokumentaci k libunwind a našel způsob, jak z C vyhodím výjimku (musím linkovat k libgcc nebo k libunwind). Taky má GCC attribut cleanup, který mi zavolá funkci, když nějaká C++ funkce (callback) vyhodí výjimku, taže bych uměl i uklidit. Mou z C vyhozenou výjimku (pomocí _Unwind_RaiseException) dokáže chytit C++ catch(...) blok. Zajímalo by mě ale, jestli jde nějak kompilátoru (GCC) říct, aby zavolal nějakou funkci či skočil na návěští, když callback vyhodí výjimku. Prostě jen tak ze zvědavosti. Zahrávám si s myšlenkou v blízké budoucnosti vytvořit překladač nespecifikovaného jazyka do C a chtěl bych tam mít i výjimky, aniž bych použil C++, ale chtěl bych, aby to volalo i C++ destruktory a dalo se to chytit v catch(...) bloku, zavolá-li mou funkci někdo z C++.
    // throwing_code.c
    
    #include <stdint.h>
    #include <stdio.h>
    
    typedef enum {
    	_URC_NO_REASON = 0,
    	_URC_FOREIGN_EXCEPTION_CAUGHT = 1,
    	_URC_FATAL_PHASE2_ERROR = 2,
    	_URC_FATAL_PHASE1_ERROR = 3,
    	_URC_NORMAL_STOP = 4,
    	_URC_END_OF_STACK = 5,
    	_URC_HANDLER_FOUND = 6,
    	_URC_INSTALL_CONTEXT = 7,
    	_URC_CONTINUE_UNWIND = 8
        } _Unwind_Reason_Code;
        
    typedef struct _Unwind_Exception _Unwind_Exception;
    
    typedef void (*_Unwind_Exception_Cleanup_Fn)
    		(_Unwind_Reason_Code reason, _Unwind_Exception *exc);
    
    struct _Unwind_Exception {
    	    uint64_t			 exception_class;
    	    _Unwind_Exception_Cleanup_Fn exception_cleanup;
    	    uint64_t			 private_1;
    	    uint64_t			 private_2;
        };
    
    
    extern _Unwind_Reason_Code
    _Unwind_RaiseException(_Unwind_Exception *e);
    
    
    void exception_cleanup(_Unwind_Reason_Code reason, _Unwind_Exception *e)
    {
    	printf("Exception cleanup, reason = %i, e = %p\n", (int)reason, (void*)e);
    }
    
    
    _Unwind_Exception e = {
    	((uint64_t)('J') << 56) | ((uint64_t)('A') << 48) | ((uint64_t)('R') << 40) |
    	((uint64_t)('D') << 32) | ((uint64_t)('I') << 24) | ((uint64_t)('K') << 16) |
    	((uint64_t)('\0') << 8) | ((uint64_t)('\0') << 0),
    	exception_cleanup,
    	0,
    	0
    };
    
    void throwing_code_throw()
    {
    	_Unwind_RaiseException(&e);
    }
    
    // catching_code.cpp
    
    #include <cstdio>
    
    extern "C" void throwing_code_throw();
    
    int main(int argc, char **argv)
    {
    	try {
    		throwing_code_throw();
    		printf("after exception\n");
    	}
    	catch (...) {
    		printf("caught exception\n");
    	}
    	return 0;
    }
    

    Odpovědi

    kozzi avatar 30.12.2015 17:53 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
    Rozbalit Rozbalit vše Re: Chycení výjimky v C

    Zrovna na toto tema se nedavno vedla diskuze u jazyka D. A pokud vim tak se uz i nekam pokrocilo a v blizko dobe bude mozne v D chytat vyjimky z C++. Takze mozna se poptat nekoho z fora D.

    nejaka prace uz je i zaclenena ale nevim zda ti to bude uzitecne

    https://github.com/D-Programming-Language/dmd/pulls?utf8=✓&q=is%3Apr+author%3AWalterBright+

    Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
    31.12.2015 02:18 Jardík
    Rozbalit Rozbalit vše Re: Chycení výjimky v C
    Kouknu na to, díky.
    DaBler avatar 31.12.2015 09:26 DaBler | skóre: 17 | blog: dabler | Brno
    Rozbalit Rozbalit vše Re: Chycení výjimky v C

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.