Jsem C/C++ začátečník. Přečetl jsem už dost výukových textů, ale narazil jsem na problém, který nevím jak EFEKTIVNĚ řešit. Je to druh problému, který se většinou ve výukových textech neřeší. Ke studiu z cizích zdrojových textů jsem se zatím nedostal.
Jde o to, jak v C vracet případnou chybu, která nastala v mé funkci. Mějme např. funkci:
double deleni(const double delenec, const double delitel) {
return delenec / delitel;
}
Co když funkci předám jako dělitele nulu? Je mi jasný, že před samotným výpočtem musím dělitel zkontrolovat. Pokud bude nula, tak co? Funkce musí vracet double (takže vrátit třeba string nemůžu) a printnout to na standardní výstup nechci (nechci tím třeba prudit uživatele, když to není jeho chyba). Vrátit 0.0 nemůžu, protože to je normální výsledek (jako např. pro 0 / 1). Výjimky v C nejsou, takže tu vyhodit taky nemůžu. Jak se tento problém v C nejběžněji řeší?
Mě napadlo jen vytvořit globální proměnnou (třeba strukturu) a v případě chyby tam info o chybě zapsat. Ale zase mě přijde blbý něco typu:
clear_myerror();
double vysledek = deleni(100, 0);
if (myerror.errno > 0) {
// neco
}
// pokracovani v pripade uspechu
Toto je jen příklad - stejně tak můžu mít funkci na nějaké třídění dat (ale nemám data) nebo cokoli jiného.