Hi Altair
Ist zwar schon 4 Wochen her, aber nach meiner Meinung hat noch keiner richtig geantwortet.
Ich habe das Thema nicht in Kapitel 9 gefunden, sondern im Kapitel 8.6 Listing Singletons (Kalista-Buch 2. Auflage).
Folgendes gehört zusammen:
|
Quellcode
|
1
2
3
4
|
# ifndef TSINGLETON
# define TSINGLETON
// Quellcode der Headerdatei
#endif // TSINGLETON
|
Die Problematik:
Es kann zu Problemen in der Übersetzung führen, wenn man versucht Header-Dateien mehr als einmal einzubinden. Je größer die Anwendungen, umso größer die Gefahr der Mehrfacheinbindung. Schaue Dir zum Beispiel die windows.h an. Um nicht wie ein Luchs aufpassen zu müssen, lässt man das System selbst prüfen:
Die Lösung in der Anwendung:
Im 1. Versuch
# ifndef TSINGLETON
wenn_nicht_definiert = true
bedeutet: ist TSINGLETON noch nicht eingebunden, dann tue alles das, was bis zum
#endif steht.
Beim 2. Versuch und jeden weiteren Versuch TSINGLETON einzubinden, greift der englische Mathematiker George Boole 1815-1864 ein. Er hat die Boolesche Algebra entwickelt und ist der Namensgeber für bool.
# ifndef TSINGLETON
wenn nicht definiert = false
klare if-Sache; bedeutet: ist TSINGLETON ist eingebunden, tue nichts und gehe direkt nach
#endif
Wenn Du darauf achtest, wirst Du dies in allen großen Anwendungen entdecken. Es ist also wichtig und auch noch einfach in der Anwendung!
Terep