Oppure

Loading
20/05/09 14:26
kaig
Innanzi tutto ciao a tutti..questo è il mio primo messaggio sul forum!
Come si puo' capire dal titolo non riesco a capire l'uso di queste direttive..
:-?:-? Qualcuno mi potrebbe dire esattamente a cosa servono? grazie
aaa
20/05/09 15:52
manvb.net
#define definisce una costante e #ifndef controlla se una costante non è definita.
Di solito si usano per evitare di includere due volte lo stesso header (.h)

esempio:

poniamo di avere due file game.cpp e game.h

in game.h scriverò
#ifndef game_h    //Se game_h non è definito
#define game_h    //definisci game_h altrimenti salta a endif

//Codice

#endif


Questo per evitare che in game.cpp richiami due volte lo stesso header:

la prima volta viene definito game_h ma la seconda volta #ifndef salta tutto il codice perchè game_h è già definto.
aaa
20/05/09 18:51
kaig
oK:k: grazie...credo di aver capito...ma:
se, ad esempio, mettiamo che abbia piu' file sorgenti e devo includerci l'header in ognuno, questo permette di definire la costante una sola volta??
aaa
21/05/09 4:00
manvb.net
No, la costante sarà definita per ogni file .cpp icluda l'header solo che non ce ne saranno mai due per ogni file:

se io ho questi file:
A.cpp
H1.h
H2.h


se io faccio in H2.h:
#include "H1.h"

e poi in A.cpp:
#include "H1.h"
#include "H2.h"

Ci sarebbe un errore di ridefinizione mentre con le costanti #define e #ifndef non avviene.
Diciamo che il compilatore unisce i tre file che diventano un solo file .obj
Quindi la costante viene definita solo per un file cpp e puoi tranquillamente utilizzarla per altri file.
aaa
21/05/09 4:26
kaig
ora mi e' chiaro!...:rotfl::rotfl:
grazie
aaa