PRB: Σφάλμα "Δεν έχει φορτωθεί κινητής υποδιαστολής υποστήριξη" με scanf()

Συμπτώματα

Όταν μια εφαρμογή χρησιμοποιεί τη συνάρτηση scanf() για να διαβάσετε μια τιμή κινητής υποδιαστολής από την κονσόλα σε μια καθολική μεταβλητή τύπου δεν έχει προετοιμαστεί "κινητό", προκύπτει σφάλμα "κινητής υποδιαστολής μορφή υποστήριξης δεν έχει φορτωθεί" R6002. Αυτό το σφάλμα παρουσιάζεται επίσης, όταν χρησιμοποιείται οποιαδήποτε μορφή ρουτίνα εισόδου για να διαβάσετε μια τιμή.

Αιτία

Το πρόγραμμα μεταγλώττισης δεν δημιουργεί μια αναφορά στη μεταβλητή __fltused που καθοδηγεί το πρόγραμμα σύνδεσης για να φορτώσει τη λειτουργική μονάδα κινητής υποδιαστολής υποστήριξης.

Προτεινόμενη αντιμετώπιση

Για να επιλύσετε αυτό το ζήτημα, προετοιμασία της μεταβλητής κινητής υποδιαστολής ή να χρησιμοποιήσετε τη μεταβλητή σε μια παράσταση στη ρουτίνα που περιέχει την κλήση του scanf().

Κατάσταση

Αυτή η συμπεριφορά είναι αναμενόμενη. Για να ελαχιστοποιήσετε το μέγεθος του εκτελέσιμου αρχείου, το πρόγραμμα μεταγλώττισης φορτώνει υποστήριξη κινητής υποδιαστολής, μόνο όταν απαιτείται.

Περισσότερες πληροφορίες

Όταν μια λειτουργική μονάδα χρησιμοποιεί ένα μόνο από τα μορφοποιημένα ρουτίνες εισόδου και δεν προετοιμάζει επίσης μια μεταβλητή κινητής υποδιαστολής, το πρόγραμμα μεταγλώττισης δεν φορτώνει υποστήριξη κινητής υποδιαστολής.

Καταργήστε την ένδειξη σχόλιο από μία ή και τις δύο από τις δύο γραμμές στο δείγμα κώδικα παρακάτω, για να απαλείψετε το σφάλμα R6002.

Δείγμα κώδικα

   /*    * Compile options needed: none
*/

#include <stdio.h>
float x ;

main()
{
// Remove the comment from the next line to eliminate the error.
// x = 2.3 ;

scanf ("%f", &x) ;

// Remove the comment from the next line to eliminate the error.
// printf ("%f\n", x) ;
}

Ιδιότητες

Αναγνωριστικό άρθρου: 37507 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια