Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ieri ho iniziato a leggere le guida di html.it sul c++. Da subito ho deciso che avrei associato alla teoria la pratica e, al primo codice (il fatidico hello word!) ho provato a scrivere e compilare...non ci sono riuscito ma il punto non è questo. Non ho ben capito cosa cambia tra file di intestazione (.h) e file c++ (.cpp). Cosa cambia?
Inoltre: quando apro un nuovo progetto con Microsoft Visual C++ 2008 Express Edition mi propone di fare l'intestazione precompilata...è consigliata o no?
Inoltre: quando creo un nuovo progetto ho capito che la funzione main (quella principale) dovrà essere presente solo in un file. Un ultima cosa: non ho ben capito cos'è la funzione
innanzitutto mi associo agli altri utenti nel dirti di lasciar perdere quella guida, non per un pregiudizio sulle guide online, ma per il semplice fatto che non ti spiega nemmeno la differenza tra .h e .c (o .cpp).
Però ora rispondo anche alle tue domande
Testo quotato
Postato originariamente da cassin.simone: Ieri ho iniziato a leggere le guida di html.it sul c++. Da subito ho deciso che avrei associato alla teoria la pratica e, al primo codice (il fatidico hello word!) ho provato a scrivere e compilare...non ci sono riuscito ma il punto non è questo. Non ho ben capito cosa cambia tra file di intestazione (.h) e file c++ (.cpp). Cosa cambia?
Il file .h viene detto header.
Al suo interno stanno (dovrebbero stare) solamente i typedef, i prototipi delle funzioni, le costanti e più in generale le direttive del preprocessore. (non mi dilungo per non confonderti)
Il file .cpp invece contiene il codice delle funzioni elencate nel .h .
Per convenzioni .h e .cpp dovrebbero avere lo stesso nome.
Eccoti un banale esempio:
Codice sorgente - presumibilmente C/C++
//mia_lib.h
#DEFINE MAX 10
typedef enum{VUOTO, PIENO} stato;
void svuota(int vettore[]);
Codice sorgente - presumibilmente C/C++
//mia_lib.cpp
#include "mia_lib.h" //le virgolette (e non <>) indicano al compilatore di cercarlo nella
//cartella in cui ci sono i file sorgenti.
void svuota(int *vettore)
{
int i;
for(i = 0; i < MAX; i++)
vettore[i] = VUOTO;
}
Se volessi mettere tutto nel .h il compilatore non segnalerebbe nessun errore e il programma funzionerenne correttamente, ma è concettualmente sbagliato!!!
Testo quotato
Postato originariamente da cassin.simone: Inoltre: quando apro un nuovo progetto con Microsoft Visual C++ 2008 Express Edition mi propone di fare l'intestazione precompilata...è consigliata o no?
Qua non posso aiutarti, in quanto non usando visual studio, non so di cosa tu stia parlando, ma mi pare ti abbiano già risposto
Testo quotato
Postato originariamente da cassin.simone: Inoltre: quando creo un nuovo progetto ho capito che la funzione main (quella principale) dovrà essere presente solo in un file. Un ultima cosa: non ho ben capito cos'è la funzione
Codice sorgente - presumibilmente C/C++
#include <iostream.h>
qualcuno gentilmente me lo potrebbe spiegare?
Grazie
SC
#include <iostream> non è una funzione ma "qualcosa" che dice al compilatore dove andare a cercare alcune funzioni che utilizzerai (ad esempio cin e cout in questo caso).
In quanto al main, si deve essercene solamente uno che andrà ad utilizzare le altre funzioni da te costruite nei vari file .cpp.
CONSIGLIO: visto che il c e il c++ sono già abbastanza difficili di loro, non andare a complicarti la vita con inutili file aggiuntivi.
Per il momento fai tutto in un solo file.
Grazie per le numerose "dritte" e spegazioni. Il manuale lo chiederò per natale e, nel frattempo, volevo almeno acquisire 1/100 di basi...
Guardando per il web ho trovato un hello word almeno apparentemente funzionante. Il codice è questo:
Codice sorgente - presumibilmente C++
#include <iostream>
usingnamespace std;
int main()
{
cout<<"Hello World!"<< endl;
return0;
}
A parte che non viene spiegato cosa vuol dire <<endl...ho compilato e non mi da errore. Però (non so se sia capitato a tutti) mi è venuto fuori un messaggio del tipo (vedi allegato).
Ho già provato (come consigliato nel messaggio) a reinstallare il compilatore (Microsoft Visual C++ 2008 express edition) ma il risultato è pressochè identico. Non so se sbaglio io o se è un problema comune...potete aiutarmi?
Risolto tutto...grazie all'aituo di manvb.net matteoiamma e tutti voi...grazie ancora.
P.S.non passerà molto tempo prima che ri-posti nella stessa sezione