Elenion Skrevet 20. februar 2007 Skrevet 20. februar 2007 (endret) jeg har en fil "filnavn.h" som ser slik ut: #ifndef FILNAVN_H #define FILNAVN_H extern void funksjon1(int variabel); void funksjon2(int variabel, int variabel2); #endif (Jeg har en annen fil, "filnavn.c" der jeg har innholdet til funksjonene(hva de gjør)). Spm mitt er da hva forskjellen er på å skrive extern eller ikke foran funksjonene i .h-filen.. Såvidt jeg har erfart kan jeg bruke både funksjon1 og funksjon2 i alle de andre .c-filene mine sålenge jeg har en include filnavn.h på toppen. Hvorfor det? Ikke veldig praktisk spm kanskje men jeg prøver å forstå ting og tang:) Endret 20. februar 2007 av Elenion
einaros Skrevet 20. februar 2007 Skrevet 20. februar 2007 extern betyr i den sammenhengen der at symbolet defineres av en annen "translation unit", det vil si en annen .c/cpp-fil. Kompilatoren din godtar dermed at en definisjon ikke foreligger når funksjonen forsøkes kalles, og overlater resten til linkeren. Nå skal det nevnes at det (i hvertfall i C++) at extern er standardlagringsmetoden for alle symboler deklarert (i namespace / global scope).
Elenion Skrevet 20. februar 2007 Forfatter Skrevet 20. februar 2007 Jeg kan ikke C++ Men ok tror jeg nesten forsto hva du mente. Makefilen min kompilerer jo alle .o-filene sammen i 1 fil, så det er kanskje derfor det fungerer uten extern?
einaros Skrevet 20. februar 2007 Skrevet 20. februar 2007 Jeg kan ikke C++ Men ok tror jeg nesten forsto hva du mente. Makefilen min kompilerer jo alle .o-filene sammen i 1 fil, så det er kanskje derfor det fungerer uten extern? 7988607[/snapback] Hver objekt-fil (.o) representerer én "translation unit". Dersom det fungerer å ha en ikke-ekstern funksjonsdeklarasjon i én .c-fil, og implementasjonen i en annen, uten noen headerfiler deles mellom de to, så er extern standard i C også.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå