[c++] Che cos'è un errore di "identificatore non dichiarato" e come risolverlo?


4 Answers

Considera una situazione simile nella conversazione. Immagina che il tuo amico ti dica: "Bob sta arrivando per cena" e non hai idea di chi sia Bob. Sarai confuso, giusto? Il tuo amico avrebbe dovuto dire: "Ho un collega di lavoro che si chiama Bob. Bob sta venendo a cena". Ora Bob è stato dichiarato e tu sai di chi sta parlando il tuo amico.

Il compilatore emette un errore di "identificatore non dichiarato" quando si è tentato di utilizzare un identificatore (quale sarebbe il nome di una funzione, variabile, classe, ecc.) E il compilatore non ha visto una dichiarazione per questo. Cioè, il compilatore non ha idea di cosa ti stai riferendo perché non l'ha visto prima.

Se ottieni un tale errore in C o C ++, significa che non hai detto al compilatore cosa stai cercando di usare. Le dichiarazioni si trovano spesso nei file di intestazione, quindi probabilmente significa che non hai incluso l'intestazione appropriata. Certo, può darsi che tu non abbia ricordato di dichiarare l'entità.

Alcuni compilatori danno errori più specifici a seconda del contesto. Ad esempio, tentando di compilare X x; dove il tipo X non è stato dichiarato con clang ti dirà "nome tipo sconosciuto X ". Questo è molto più utile perché sai che sta cercando di interpretare X come un tipo. Tuttavia, se hai int x = y; , dove y non è stato ancora dichiarato, ti dirà "uso dell'identificatore non dichiarato y " perché c'è qualche ambiguità su cosa esattamente potrebbe rappresentare.

Question

Quali sono gli errori dell'identificatore non dichiarato? Quali sono le cause più comuni e come risolverle?

Esempi di testi di errore:

  • Per il compilatore di Visual Studio: error C2065: 'printf' : undeclared identifier
  • Per il compilatore GCC: `printf' undeclared (first use in this function)



Controlla se stai importando gli stessi pacchetti nel tuo .m e nel tuo .h Esempio dato: ho avuto questo problema con il metodo init ed è stato causato dalla mancanza di "#import" sul file .m




Un identificatore C ++ è un nome utilizzato per identificare una variabile, una funzione, una classe, un modulo o qualsiasi altro elemento definito dall'utente. In C ++ tutti i nomi devono essere dichiarati prima di essere utilizzati. Se si tenta di utilizzare il nome di un tale che non è stato dichiarato si otterrà un errore di compilazione "identificatore non dichiarato".

Secondo la documentation , la dichiarazione di printf () è in cstdio cioè devi includerla prima di usare la funzione.




È come usare la funzione senza dichiararla. il file di intestazione conterrà la funzione printf (). Includere il file di intestazione nel programma questa è la soluzione per questo. Alcune funzioni definite dall'utente possono anche passare per errore se non dichiarate prima di usarlo. Se è usato globalmente, nessun problema.




In C e C ++ tutti i nomi devono essere dichiarati prima di essere utilizzati. Se si tenta di utilizzare il nome di una variabile o una funzione che non è stata dichiarata, si otterrà un errore di "identificatore non dichiarato".

Tuttavia, le funzioni sono un caso speciale in C (e solo in C) in quanto non è necessario dichiararle prima. Il compilatore C assumerà che la funzione esista con il numero e il tipo di argomenti come nella chiamata. Se la definizione della funzione effettiva non corrisponde a quella che otterrai un altro errore. Questo caso speciale per funzioni non esiste in C ++.

Correggi questo tipo di errori assicurandoti che funzioni e variabili siano dichiarate prima di essere utilizzate. Nel caso di printf è necessario includere il file di intestazione <stdio.h> (o <cstdio> in C ++).

Per le funzioni standard, ti consiglio di controllare ad esempio questo sito di riferimento e cercare le funzioni che desideri utilizzare. La documentazione per ogni funzione ti dice quale file di intestazione hai bisogno.




Related