Soweit ich mitbekommen habe dienen anweisungen wie
Code:
#ifndef __HEADERXX__
#define __HEADERXX__
..
..
#endif
oder #pragma once dazu, zu verhindern, dass Header mehrfach eingefügt werden. Nur was genau macht das #ifndef / #define / #endif eigentlich, damit soetwas verhindert wird? Und was ist der unterschied zwischen der ersten Methode und #pragma once? #pragma once hab ich bisher in nur einer einzigen Anwendung gesehen, dabei scheints viel komfortabler zu sein. Und muss man eigentlich immer wenn man an 2 verschiedenen Stellen denselben Header einbindet darauf achten, eine dieser Methoden anzuwenden oder nicht?

Und noch ne andere Kleinigkeit:
Mir ist aufgefallen, dass sehr oft ein Grundgerüst einer Klasse(Funktionen ohne Anweisung und mit ; beendet) in einer Headerdatei erstellt wird und in einer cpp Datei werden per Klassenname::Funktionsname die Anweisungen erstellt. Ansich gefällt mir das Prinzip mit dem Grundgerüst und ausserhalb Funktionsanweisungen erstellen weil man auf einen Blick sieht, wie die Klasse aufgebaut ist, aber die Trennung in eine Header und eine cpp Datei ist mir wiederum zu unübersichtlich. Ist es programmiertechnisch ein Fehler, wenn ich einfach beides in dieselbe Headerdatei schreibe und dann einfach irgendwo inkludiere?
Mit dem kompilieren gibts da keine Probleme.