Τι είναι το σφάλμα 'undeclared identifier' και πώς μπορώ να το διορθώσω;

Τι είναι τα σφάλματα μη δηλωμένου αναγνωριστικού; Ποιες είναι οι συνήθεις αιτίες και πώς μπορώ να τα διορθώσω;

Παράδειγμα κειμένων σφάλματος:

  • Για τον μεταγλωττιστή του Visual Studio: Σφάλμα C2065: 'cout' : αδήλωτο αναγνωριστικό.
  • Για τον μεταγλωττιστή GCC: "Error": 'cout' undeclared (πρώτη χρήση σε αυτή τη συνάρτηση)

Τις περισσότερες φορές προέρχονται από το γεγονός ότι ξεχνάτε να συμπεριλάβετε το αρχείο κεφαλίδας που περιέχει τη δήλωση της συνάρτησης, για παράδειγμα, αυτό το πρόγραμμα θα δώσει ένα σφάλμα 'undeclared identifier':

Λείπει η επικεφαλίδα


int main() {
    std::cout 
Σχόλια (4)

Στη C και τη C++ όλα τα ονόματα πρέπει να δηλωθούν πριν χρησιμοποιηθούν. Αν προσπαθήσετε να χρησιμοποιήσετε το όνομα μιας μεταβλητής ή μιας συνάρτησης που δεν έχει δηλωθεί, θα λάβετε ένα σφάλμα "undeclared identifier".

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

Διορθώνετε αυτού του είδους τα σφάλματα φροντίζοντας να δηλώνετε τις συναρτήσεις και τις μεταβλητές πριν τις χρησιμοποιήσετε. Στην περίπτωση της printf πρέπει να συμπεριλάβετε το αρχείο κεφαλίδας στη C++).

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

Σχόλια (0)

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

Σχόλια (0)