Δημοσιεύτηκε: 15 Οκτ 2013, 01:52
από simosx
spyridon1971 έγραψε:
Λοιπόν, στην παρακάτω ασκησούλα, ο code::blocks μου φέρνει Προειδοποίηση: program ignoring return value of 'scanf', declared with attribute warn_unused_result.


Απλά το Code:Blocks ενεργοποιεί την πιο αυστηρή εκδοχή του gcc κατά τη μεταγλώττιση. Αν μεταγλώττιζες από τη γραμμή εντολών με
gcc mytest.c -o mytest
τότε δε θα εμφάνιζε την προειδοποίηση.

Ο λόγος που έχεις την προειδοποίηση είναι ότι η εντολή scanf() επιστρέφει μια τιμή, και εσύ δεν την ελέγχεις. Είναι καλή πρακτική να ελέγχεις την επιστρεφόμενη τιμή ώστε π.χ. να διακόπτεις την εκτέλεση αν ο χρήστης δεν έγραψε κάτι.
Σε περίπτωση που δε θέλεις να βλέπεις αυτού του είδους τις προειδοποιήσεις, μπες στις ρυθμίσεις του προγράμματος και άλλαξε τις επιλογές για προειδοποιήσεις (να μην εμφανίζει όλες τις προειδοποιήσεις).

Για να λάβεις δεδομένα από το πληκτρολόγιο, διάβασε και το άρθρο στο http://faq.cprogramming.com/cgi-bin/sma ... 1043284385 Αναφέρει μια καλή πρακτική με χρήση της fgets() αντί για τη scanf().