View Full Version : [C++] Aiuto 'collegare' file.
cataleen
05-02-2007, 19:50
Ciao ragazzi. Ho una domanda un po' (troppo) da principianti. Avendo il classico Hello World...come faccio a usare in un Hello World le variabili che ho dichiarato in un altro file?
Per esempio
#include <iostream>
int main() {
std::cout << "Ciao " << nome << endl;
}
in questi file .cpp ho la varibile nome. Come faccio a prenderla da un altro file sempre cpp o h? Grazie e scusate la domanda.
se è in un .h, la puoi utilizzare senza problema a patto di includere il file.
se è in un .c, potresti richiamarla con la direttiva extern
http://www-ee.eng.hawaii.edu/~tep/EE150/book/chap14/subsection2.1.1.4.html
Ciao ragazzi. Ho una domanda un po' (troppo) da principianti. Avendo il classico Hello World...come faccio a usare in un Hello World le variabili che ho dichiarato in un altro file?
Per esempio
#include <iostream>
int main() {
std::cout << "Ciao " << nome << endl;
}
in questi file .cpp ho la varibile nome. Come faccio a prenderla da un altro file sempre cpp o h? Grazie e scusate la domanda.Innanzitutto è ovvio che entrambi i file oggetti dovranno essere poi passati al linker per essere "uniti".
In un sorgente, per poter usare variabili o funzioni presenti in un altro sorgente, è sufficiente che il compilatore venga a conoscenza del tipo di variabile/funzione tramite una 'allusione', fatta con la parola chiave extern.
Esempio:
Sorgente1.cpp
#include <iostream>
extern char *nome;
int main() {
std::cout << "Ciao " << nome << endl;
}
Sorgente2.cpp
char *nome = "pippo";
cataleen
05-02-2007, 20:23
Grazie mille, ma posso scrivere un normale Hello World in un file .h? e come faccio a linkare i due file usando g++ su linux? grazie ancora
Grazie mille, ma posso scrivere un normale Hello World in un file .h?E perché dovresti farlo?? Nei file di include si mettono di norma solo quelle dichiarazioni (di macro, strutture, ecc....) che non comportano una "occupazione di memoria". Quindi mettere in un file di header ad esempio un int pippo; o la definizione di una funzione, è una cosa concettualmente sbagliata.
e come faccio a linkare i due file usando g++ su linux? grazie ancoraIl comando più semplice e breve è:
g++ -o mioprogramma sorgente1.cpp sorgente2.cpp
cataleen
05-02-2007, 21:12
E perché dovresti farlo?? Nei file di include si mettono di norma solo quelle dichiarazioni (di macro, strutture, ecc....) che non comportano una "occupazione di memoria". Quindi mettere in un file di header ad esempio un int pippo; o la definizione di una funzione, è una cosa concettualmente sbagliata.
Il comando più semplice e breve è:
g++ -o mioprogramma sorgente1.cpp sorgente2.cpp
grazie 1000. scusate ma sono all'inizio
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.