im Zuge der Arbeit am C-Projekt für die Uni (vorhin abgegeben, jetzt hoffentlich fehlerfrei und funktionstüchtig) ist mir ein Punkt an C bzw. am C-Compiler (ich nutze gcc 4.0.1) aufgefallen, der mir ein wenig seltsam vorkommt.
Es geht um eine Funktion mit definiertem Rückgabetyp, die aber nicht immer auch einen Wert zurück gibt. Bspw. folgendes:
Die Funktion foo liefert in diesem Fall gar nichts zurück und ich hatte zuerst angenommen, daß daher i seinen ursprünglichen Wert beibehält.
In meinem Fall hatte ich danach die Rückgabe daraufhin überprüft ob ein Fehler im Funktionsaufruf auftrat (dann liefert die Funktion 1 zurück), was selbst bei normaler Ausführung (also wenn kein Fehler auftrat) keinerlei Fehlermeldungen oder Programmabstürze verursacht hat.
Dennoch hat eine Analyse des Programms mit valgrind diesen Umstand moniert.
Meine Frage ist jetzt, gibt es eine Konvention oder eine sonstige Regel im C-Standard die besagt, was i hier im Beispiel nach dem Funktionsaufruf für einen Wert haben soll, oder ist das unbestimmt und letztlich dem Zufall überlassen?
Und falls es dafür keinen vorgeschriebenen Weg gibt, wieso moniert der Compiler diesen Umstand nicht und gibt zumindest eine Warnung aus?
Weiß da jemand genaueres?