Odpovídáte na názor ke článku SEH v Linuxu (C++).
Neznám implementační detaily konkretného GCCčka. Ve světě linuxu není jen GCC. Vyskakování ze signálů pomocí (sig)longjmp je přitom posixově portabilní. Teoreticky by to tedy mělo fungovat všude, kde se používají posixové signály. Ale co když tam C++ výjimky implementují pouze jako alternativní cesta namísto jít returnem. Vždyť se to dá jednoduše. Stačí, když překladač bude výjimky implementovat tak, jako se bez výjimek ošetřují chyby. Něco jako "druhá návratová hodnota". Excepction handler pak není nic jiného, než nějaka extra větev ve funkci. Stack unwind se dá dělat staticky, protože všechny cesty z každého throw jsou dopředu známé. A potencionální bezpečí je právě v tom, že vyhození výjimky z neočekávaného místa nemusí vůbec fungovat, dokonce nemusí být vůbec možné!!!! V tomto směru vidím ještě velký vývoj. Rozhodně bych teď neřešil. Také to není účelem. Opravdu má představa byla spíš v tom, že to použiju při kopírování mapované paměti, test platnosti ukazatele, nebo práce s pamětí, která může kdykoliv během činnosti zmizet a jediný, na co si tam člověk musí dát pozor je, že nebude tam vytvářet objekty, které vyžadují destrukci při unwindu. To je celé.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 57 608×
Přečteno 27 722×
Přečteno 26 403×
Přečteno 24 367×
Přečteno 22 864×