PDA

View Full Version : [C/C++] problema .c/.cpp e .h


Valhalla
28-07-2010, 14:07
Ciao a tutti,

premetto che non sono molto ferrato in ambito linux, me la cavo il tanto che basta per sopravvivere. Detto ciò ho un problema con un progetto in C/C++ e ho necessità di creare un file .cpp con all'interno delle funzioni il cui prototipo è dichiarato in un .h , in italiano questa è una libreria! :D il problema è che non ho capito cosa devo mettere nel .h!! Ora il progetto è così strutturato:

file che contiene il main:
#include <Lib/lib.h>

nel lib.h:
void foo () ;

e nel lib.cpp:
void foo ( ) { /* ... */ }

e naturalmente non va.

nel lib.h devo mettere extern? lo devo mettere nel .cpp?

purtroppo non so come fa!! :help:

Grazie! :)

Albi89
28-07-2010, 14:16
Ma non si capisce niente :ciapet:

Che vuol dire che non va? Che errori ricevi?
Hai parlato di libreria, ma poi parli di main; quindi stai semplicemente compilando separatamente i due file cpp o devi effettivamente realizzare una libreria? In questo caso, come compili?

Valhalla
28-07-2010, 22:46
Si ora che l'ho riletto, effettivamente non si capisce una mazza :D

Allora, io ho un cpp che contiene il main. in questo cpp io metto #include <Lib/lib.h> ed eclipse fa sparire la linea tratteggiata sotto, vuol dire che il path del file è corretto. Ora, io nel .h metto il prototipo, oltre al prototipo devo mettere altro? devo includere il cpp in cui è contenuto il codice a cui il prototipo fa riferimento? Quando compilo il compilatore si lamenta che non riesce a trovare la funzione che io chiamo all'interno del main. Più che altro mi serve sapere quale è la prassi, poi mi arrangio io :D

Grazie :)

Albi89
28-07-2010, 23:29
Si ora che l'ho riletto, effettivamente non si capisce una mazza :D

Allora, io ho un cpp che contiene il main. in questo cpp io metto #include <Lib/lib.h> ed eclipse fa sparire la linea tratteggiata sotto, vuol dire che il path del file è corretto. Ora, io nel .h metto il prototipo, oltre al prototipo devo mettere altro? devo includere il cpp in cui è contenuto il codice a cui il prototipo fa riferimento? Quando compilo il compilatore si lamenta che non riesce a trovare la funzione che io chiamo all'interno del main. Più che altro mi serve sapere quale è la prassi, poi mi arrangio io :D

Grazie :)

No, è corretto includere solo l'header (naturalmente, ovunque richiami le funzioni! Includilo sia nel file che contiene il main, sia in quello che contiene le implementazioni), e per questo mi interessava l'output del compilatore che hai ricevuto e magari qualche riga di codice in più.
Ad esempio, potrebbe trattarsi di un errore del linker: magari non hai aggiunto al progetto il file in cui hai definito le funzioni.

Valhalla
29-07-2010, 18:52
Ok risolto!! era un problema del linker :p

Grazie mille! :)