Sono pazzo?
[SI] [NO] [ANNULLA] [TRALASCIA]
Che poi... cazzo significa "tralascia" se c'è "annulla"?
Ma ritorniamo all'argomento principale
Ho scritto questo (https://gist.github.com/TonyWhite/070e552314b63b74f7247529c2fd96e2) e l'ho commentato in fondo sotto sotto giù in basso.
Secondo voi è utile proteggere il sorgente dal caricamento multiplo?
il compilatore si accorge se definisci più volte uno stesso header? se sì, probabilmente non è molto utile..
Mi sono sentito con un paio di amici programmatori.
Quello che ho proposto è una cazzata.
1) Avevo letto che è possibile evitare di definire più volte lo stesso header
2) Avevo pensato che sarebbe utile evitare la definizione multipla del sorgente
In pratica avevo delle lacune che mi hanno portato a pensare quella soluzione
1) Gli header devono poter essere indipendenti dal sorgente, quindi ho sbagliato a includere il sorgente nell'header
2) Ogni sorgente che ha un header separato, avrà sempre il relativo #include in cima
3) Il makefile indicherà *.cpp ansiché il solo main.cpp. In questo modo non sarò vincolato a includere anche il sorgente in ogni classe che lo chiama.
L'errore ora è palese: me lo stavo creando da solo.
Però è stato utile avere quell intuizione, adesso sappi di più, se non si cerca sempre qualcosa, non stimoli i neuroni. :smoke:
Esatto ;)
1)non devi MAI includere sorgenti negli header
2)non devi MAI includere sorgenti negli header
3)gli header devono avere sempre gli header guard (#IFNDEF __QUALCOSA__ #DEFINE <tutto il tuo .h> #ENDIF )
4)il compilatore non è in grado di accorgersi se un header è stato incluso più volte se non usi un guard, quindi alla seconda definizione di un simbolo ti sfanculerebbe immediatamente.
Un amico mi ha fatto notare che ho adottato il metodo della SCU (https://en.wikipedia.org/wiki/Single_Compilation_Unit) :asd: