És pl. egy ilyen konstrukció (ilyesmi a Linux kernelre a jellemző)?
Csak a visszatérési értékre van segédváltozó, azzal meg a legtöbb fordító tud mit kezdeni. Kb. a kivételkezelés-féle stack visszagörgetést-destruktor hívást játszod le. Persze nyilván nyelvi elemmel kulturáltabb lehetne. De az openssl-féle "megoldást" nem tartom elfogadottnak, ha ilyet is lehet:
a=get_a();
if(!a){
retval=-ENAGYABAJ;
goto err_a;
}
b=get_b()
if(!b){
retval=-ENAGYABAJ;
goto err_b;
}
goto ret_success; /* egy bemenet – egy kimenet */
err_b:
free_a(a_ptr);
err_a:
ret_success:
return retval;
Egyébként nagyon akarsz, tudsz kivételkezelést megvalósítani C-ben, igaz, nem nyelvi elemként, inkább csak érdekességként írom (nem használnám): http://www.on-time.com/ddj0011.htm