Newsgroup: it.comp.lang.c++
Titolo: CPP e H

Ciao a tutti,
sono un programmatore molto poco esperto di C++.
Il mio stupidissimo problema è il seguente:
COME FARE PER UTILIZZARE FILE CPP E H?
Mi spiego meglio.
Io vorrei aggiungere al mio progettino principale un file CPP contenente
tutte le funzioni e quindi il relativo file H contenente le intestazioni, in
modo tale che il programma principale risulti di più chiara lettura.
A prima vista mi sembra semplice perchè utilizzo INCLUDE e mi dico: "passa
la paura", però poi non è così.
COME FARE ?

 COME FARE ?
Ad occhio e croce, direi che hai usato l'#include con i caratteri <>.
Prova con le virgolette "".
Se non è questo il tuo problema, posta il tuo codice.
Buona fortuna,
--
Lupin85©
FILSer #2 - Founder di #fils
"It is not important what you believe, only that you believe"

Nel mio file cpp principale scrivo:
   #include "stdafx.h"
   #include "iostream.h"
   #include "sommare.h"
   int main(int argc, char* argv[])
   {
      int somma;
      somma = SommaDueNumeri(5, 6);
      cout << "5 + 6 = " << somma << "\n\n";
      return 0;
   }
Nel file "sommare.h" scrivo la dichiarazione:
   int SommaDueNumeri(int, int);
Nel file "sommare.cpp" scrivo:
   int SommaDueNumeri(int a, int b)
   {
      return a + b;
   }
L'errore che viene generato è:
"fatal error C1010: unexpected end of file while looking for precompiled
header directive"

 header directive"
è un problema relativo al file stdafx.h.
a che ti serve l'header precompilato? per operazioni del genere il c++
standard basta ed avanza.
Prova a non utilizzarlo ed a correggere il programma come ho scritto.


 ha scritto nel messaggio
news:CL%c9.55306$pX1.1...@news2.tin.it...

 Quel modo di scrivere, va bene per le classi, ma non per funzioni "C".
Cosa chiami funzione "C"? Quella qui sopra e' una normalissima funzione
libera che e' giustamente dichiarata in uno header file e definita in un
file sorgente.
Il problema semmai e' altrove.
Ciao,
Nicola

scusate ho preso un abbaglio!!!!!


1)   Devo usare C++ e non C
2)   Quello che ho fatto č solo un esempio banale, ma molto esplicativo.
Quello che invece sto facendo č invece un programma un po' piů complesso
anche se lo sto facendo solo per imparare.
insomma come devo fare se voglio mettere tutte le funzioni che mi servono in
un file CPP a parte (col relativo file H)?
Cosě posso riutilizzarle in tutti i programmini, no?
ciao.

 questo caso va tutto in un unico file.
perché, quello non è c++?





 ho provato come mi avete detto ma non succede nulla
impossibile
io ho compilato il tuo programma, con il metodo che ti ho
suggerito, e funziona tutto.
ecco i file.
main.cpp
--------
#include <iostream>
    #include "sommare.h"
    using std::cout;
    int main(int argc, char* argv[])
    {
       int somma;
       somma = SommaDueNumeri(5, 6);
       cout << "5 + 6 = " << somma << "\n\n";
       cout << "Premere INVIO per continuare... " << endl;
       while(cin.get() != '\n');
       return 0;
    }
sommare.h
---------
#ifndef SOMMARE_H
#define SOMMARE_H
int SommaDueNumeri(int, int);
#endif
sommare.cpp
-----------
int SommaDueNumeri(int a, int b)
    {
       return a + b;
    }


 ha scritto nel messaggio
news:B0vd9.1667$AW6....@twister2.libero.it...


 ha scritto nel messaggio
news:B0vd9.1667$AW6....@twister2.libero.it...


 header directive"
	Vai nelle proprieta' del progetto, sfogliati per bene tutte le schede,
ad un certo punto ti chiede con un checkbox se deve cercare i
precompiled header; deseleziona il checkbox.
	E' una cosa del genere, purtroppo non te lo so dire nel dettaglio
perche' e' un pezzo che ho abbandonato il VisualStudio.
_dave_

 sia nel main.cpp che nel sommare.cpp
allora
stai usando il vc++, giusto?
hai fatto un programma console?
fai uso di funzioni presenti negli header precompilati?
usi le mfc?


 ha scritto nel messaggio
news:LiLd9.4593$AW6.1...@twister2.libero.it...


 ha scritto nel messaggio
news:20020905152800.60f...@tin.it...


 Cosa sono le mfc?
Microsoft Foundation Classes.
Se fai un giretto nell'help file del vc++ troverai maggiori
info


 Per curiositą, che funzioni usi da questi header?


 Come faccio ad includerli questi hader precompilati
il mio consiglio č di concentrarti intanto sul c++ standard,
e *successivamente* approfondire un'implementazione.
non usare, per ora, header precompilati.
per non utilizzarli, quando crei un'applicazione console
win32, scegli "empty project", unica tra le selezioni che ti
permette di non utilizzare questi header precompilati.
non so neppure a cosa servano, ho usato pochissimo il vc++,
e sono subito *felicemente* passato all'ultima beta del dev-c++,
free, completo ed efficiente.
se poi hai necessitą particolari, continua ad usare il vc++.
nel frattempo prova a compilare il tuo progettino come ti ho
detto io, cioč creando un nuovo "empty project", ed aggiungendo
al progetto i files main.cpp, sommare.cpp e sommare.h.
buona fortuna


 non so neppure a cosa servano, ho usato pochissimo il vc++,
Accelerano *molto* la velocita' di compilazione.
-- 
Andrea Bergia - studente
Linux Registred User #281550

 Accelerano *molto* la velocita' di compilazione.
ma non credo siano necessari per un programma che somma due numeri.


Allora, lo rispiego per chi non lo avesse ancora capito.
IL PROGRAMMA CHE SOMMA DUE NUMERI E' SOLO UN ESEMPIO CHE HO FATTO.
MI SERVIVA UN ESEMPIO SEMPLICE PER FARVI CAPIRE COSA VOGLIO.
CHE FA MI METTO A POSTARE UN ESEMPIO DI 10000 RIGHE DI CODICE, SOLO PERCHé
COSì AVREBBE PIù SENSO?
Ho solo bisogno di capire come fare per poter utilizz<are nel mio programma
un secondo file CCP con relativo file H.

 COSì AVREBBE PIù SENSO?
mi pare di avertelo scritto un paio di volte...


 ha scritto nel messaggio
news:8Ame9.13274$AW6.2...@twister2.libero.it...


 Che cosa mi hai scrittto un paio di volte.
ti ho postato tutto il tuo programma di esempio con i dovuti
includes e ti ho detto come fare un programma senza gli header
precompilati.
Ripeto tutto, spero di spiegarmi meglio.
Per non usare gli header precompilati, devi aprire il VC++,
andare su "New project", selezionare "Win32 Console Application"
e creare un nuovo "Empty project".
Ora crea un nuovo file .cpp, main.cpp.
Qui metti il seguente codice:
main.cpp
-------
    #include <iostream>
    #include "sommare.h"
    using std::cout;
    int main(int argc, char* argv[])
    {
       int somma;
       somma = SommaDueNumeri(5, 6);
       cout << "5 + 6 = " << somma << "\n\n";
       /*le seguenti due linee di codice servono ad evitare che
         la finestra si chiuda immediatamente*/
       cout << "Premere INVIO per continuare... " << std::endl;
       while(std::cin.get() != '\n');
       return 0;
    }
poi crea un header, sommare.h:
sommare.h
---------
#ifndef SOMMARE_H
#define SOMMARE_H
int SommaDueNumeri(int, int);
#endif
ed infine crea un altro file .cpp:
sommare.cpp
-----------
int SommaDueNumeri(int a, int b)
    {
       return a + b;
    }
poi compila il tutto, e vedrai che funziona.
se hai ancora problemi, butta il vc++ (a meno che tu non
abbia una regolare licenza), e passa al Dev-C++, IDE apprezzabile,
dal mio punto di vista.
Tutto il procedimento è stato testato con la mia copia (pirata)
del vc++, inattiva da quando ho imparato a scrivere qualcosa in
più di "Hello World".
Questo dovrebbe essere sufficiente a chiarirti come funziona il
meccanismo dei file header personalizzati.


 ha scritto nel messaggio
news:PKne9.13651$AW6.2...@twister2.libero.it...


 Grazie
prego! :)
facci sapere


 Non trovo nessun checkbox con PRECOMPILED HEADER
	Project		(Menu')
	Settings...	(Voce del menu' "Projects")
	C/C++		(Scheda della finestra che ti appare)
	Category: Precompiled Headers
			(voce del menu' a tendina nella scheda selezionata)
	"Not using precompiled headers"
			(radiobox)
	Se non lo trovi neanche cosi', uno di noi due ha probabilmente la
versione cinese del Visual Studio :-)
_dave_