Hva er en 'undeclared identifier' feil, og hvordan fikser jeg den?
Hva er ikke-deklarerte identifikatorfeil? Hva er vanlige årsaker, og hvordan løser jeg dem?
Eksempler på feiltekster:
- For Visual Studio-kompilatoren: `feil C2065: 'cout': udeklarert identifikator'
- For GCC-kompilatoren:
'cout' undeclared (første gangs bruk i denne funksjonen)
46
3
De kommer oftest fra å glemme å inkludere headerfilen som inneholder funksjonsdeklarasjonen, for eksempel vil dette programmet gi en 'undeclared identifier' -feil:
Manglende header
I C og C++ må alle navn deklareres før de brukes. Hvis du prøver å bruke navnet på en variabel eller en funksjon som ikke er deklarert, vil du få en "undeclared identifier"-feil.
Funksjoner er imidlertid et spesialtilfelle i C (og bare i C) ved at du ikke trenger å erklære dem først. C-kompilatoren vil anta at funksjonen eksisterer med antall og type argumenter som i anropet. Hvis den faktiske funksjonsdefinisjonen ikke samsvarer med dette, vil du få en annen feil. Dette spesialtilfellet for funksjoner finnes ikke i C++.
Du løser denne typen feil ved å sørge for at funksjoner og variabler er deklarert før de brukes. Når det gjelder
printf
må du inkludere headerfilen(eller
i C++).For standardfunksjoner anbefaler jeg at du sjekker f.eks. dette referansesiden, og søker etter funksjonene du vil bruke. Dokumentasjonen for hver funksjon forteller deg hvilken header-fil du trenger.
Det er som å bruke funksjonen uten å deklarere den. headerfilen vil inneholde funksjonen funksjonen printf(). Inkluder toppfilen i programmet ditt, dette er løsningen for det. Noen brukerdefinerte funksjoner kan også gi feil når de ikke er deklarert før de brukes. Hvis den brukes globalt er det ingen problemer.