salve a tutti.
[uso dev-cpp 4.9]
ho un file main.cpp e voglio creare un header system.h .
se su main.cpp ho una variabile int a, come mai su system.h la variabile non la trova? cioè mi tocca ridichiararla?
a cosa serve extern?
e extern "C"{
}
?
salve a tutti.
[uso dev-cpp 4.9]
ho un file main.cpp e voglio creare un header system.h .
se su main.cpp ho una variabile int a, come mai su system.h la variabile non la trova? cioè mi tocca ridichiararla?
a cosa serve extern?
e extern "C"{
}
?
Provo a risponderti...
L'utilizzo di extern per le variabili, è usata per indicare al compilatore che un riferimento ad una variabile presente in un altro file.
Il compilatore infatti non segnalerà errore é capisce che quel problema dovra essere risolto successivamente (tutto questo in fase di linking)dove verra poi allocata e inizializzata.
La variabile extern(secondo caso) in quel caso,permette di poter linkare del codice misto nel tuo progetto.
extern "C" {
void funz1(.......);
int funz2(......);
void funz3(..);
....;
....;
....;
}
Questo significa che i prototipi delle funzioni da te segnalati tra parentesi graffe ,verranno gestite come se fossero compilate e linkate dal linguaggio che hai specificato(C in questo caso),potendo cosi sfruttare delle librerie compilate in altri lunguaggi di programmazione..
Tu dovresti essere nel primo caso..
in esso é necessario introdurre nel file che verra utilizzato(system.h) ,una dichiarazione della variabile tramite la parola chiave prima discussa extern..
es
file.cpp
file.hcodice:int a=4; int main(){return 0;}
codice:extern int a;
La domanda corretta sarebbe ... "a cosa ti serve la variabile a in header.h" ?Originariamente inviato da clone_xf2
ho un file main.cpp e voglio creare un header system.h .
se su main.cpp ho una variabile int a, come mai su system.h la variabile non la trova? cioè mi tocca ridichiararla?
No MP tecnici (non rispondo nemmeno!), usa il forum.
ho una funzione su main.cpp e un int a.su main.cpp, a = funzione();
nell'header voglio creare una funzione di controllo in modo che se a != 0 la funzione metta in output un messaggio d'errore.
codice://main.cpp int a; a = funzione(); funzione2();codice://header.h extern int a; void funzione2(){ if (a!=0) cout<<"errore in funzione1."<<endl; }
Nei file header non si scrive il corpo delle funzioni.
No MP tecnici (non rispondo nemmeno!), usa il forum.
quindi dovrei creare un main2.ccp e includerlo in main.cpp?
Sì ma naturalmente non li chiamerei
main2.cpp
header.h
ma darei dei nomi più esplicativi ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
ok ma vedo numero si header che contengono funzioni.
per esempio:
codice://funzioni.h void funz1(); void funz2();codice://funzioni.cpp void funz1(){ cout<<"ciao"; } void funz2(){ cout<<"come va?"; }com'è possibile che il programma funzioni se il file funzioni.cpp non viene mai incluso??codice://main.cpp #include "funzioni.h" funz1(); funz2();
Pazienza ... le risposte del forum non sono garantite ...Originariamente inviato da clone_xf2
allora?
E poi, questa frase
che vuol dire in italiano?vedo numero si header
Quel programma funziona (ovviamente se le chiamate sono all'interno del main) perché i file .cpp NON si includono. Vengono compilati singolarmente e uniti dal linker (in genere tramite un "progetto" o un "makefile").com'è possibile
No MP tecnici (non rispondo nemmeno!), usa il forum.