( wachag | 2014. 04. 24., cs – 09:02 )

É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