Δημοσιεύτηκε: 13 Απρ 2012, 02:37
Μια απορία.
Έστω ότι έχω την function insert() της άσκησης που συζητάμε, η οποία αναλαμβάνει να προσθέσει έναν κόμβο σε μία linked list.
Η συνάρτηση έχει return type bool. Επιστρέφει true αν ο κόμβος προστεθεί επιτυχώς, αλλιώς false.
Μέσα στην συνάρτηση επίσης γίνεται χρήση της malloc() η οποία υπάρχει περίπτωση να αποτύχει.
Σε εκείνο το σημείο η συνάρτηση πρέπει να επιστρέφει μια τιμή, αλλά θέλω αυτή η τιμή να είναι ξεχωριστή για να δηλώνει ότι επέστρεψε λόγω αποτυχίας της malloc().
Άρα όχι false.
Είναι εντάξει να χρησιμοποιήσω σαν τιμή επιστροφής το NULL macro παρ' όλα που η τιμή επιστροφής της συνάρτησης έχει δηλωθεί bool;
Αν όχι τι εναλλακτικές υπάρχουν;
Edit: Σίγουρα υπάρχει πρόβλημα γιατί η σύγκριση NULL == 0 δίνει 1.
Έστω ότι έχω την function insert() της άσκησης που συζητάμε, η οποία αναλαμβάνει να προσθέσει έναν κόμβο σε μία linked list.
Η συνάρτηση έχει return type bool. Επιστρέφει true αν ο κόμβος προστεθεί επιτυχώς, αλλιώς false.
Μέσα στην συνάρτηση επίσης γίνεται χρήση της malloc() η οποία υπάρχει περίπτωση να αποτύχει.
Σε εκείνο το σημείο η συνάρτηση πρέπει να επιστρέφει μια τιμή, αλλά θέλω αυτή η τιμή να είναι ξεχωριστή για να δηλώνει ότι επέστρεψε λόγω αποτυχίας της malloc().
Άρα όχι false.
Είναι εντάξει να χρησιμοποιήσω σαν τιμή επιστροφής το NULL macro παρ' όλα που η τιμή επιστροφής της συνάρτησης έχει δηλωθεί bool;
Αν όχι τι εναλλακτικές υπάρχουν;
Edit: Σίγουρα υπάρχει πρόβλημα γιατί η σύγκριση NULL == 0 δίνει 1.