001
01.10.2008, 16:03 Uhr
Hans
Library Walker (Operator)
|
Hi,
Zitat von banshee: |
1) Man inkludiert einfach jeden header, den man braucht, direkt in der Datei IN DER man ihn braucht.
|
Das muss man sowieso machen, weil der Compiler sich sonst über unbekannte Deklarationen beschwert, wenn im Quelltext ein Symbol (Variablen- ofer Funktionsname) benutzt wird, das in einer include-datei deklariert ist, die nicht mit eingebunden wurde.
Zitat von banshee: |
dafür gibts wahrscheinlich komlettes Wirr-Warr und Mehrfach-includes.
|
Nö, kein komplettes Wirr-Warr, aber eine lange Liste mit Include-Statements am Anfang der Datei. Und gegen Mehrfachincludes helfen Include Guards. Die stehen in den Standard-Includes eh drin, in eigenen muss Du sie dann mit einbauen. Davon war hier im Forum auch schon die Rede. (Hab nur gerade keine Links parat.)
Zitat von banshee: |
2) Man macht einfach EINE header-Datei wo ALLE includes reinkommen, die das Projekt benutzt und jede Datei, die einen header braucht, inkludiert einfach die Super-include-Datei. Jetzt frage ich mich, ob das so ein guter Ansatz ist, weil so kann es ja zu Namenskonflikten und ebenfalls Mehrfachincludes kommen...
|
also Nameskonflikte möglicherweise, aber die Mehrfachincludes kannst Du ausschliessen, wenn die Includeguards sauber eingebaut sind. Ansonsten ergibt so eine Universal-Include Datei nur dann einen Sinn, wenn die Modulde, zu der sie gehören auch in weiteren Projekten verwendet werden sollen, und über weitere #define-direktiven gesteuert werden kann, welche Module verwendet werden sollen. Im Hauptprogramm würde das dann so aussehen:
C++: |
#define a #define b
#include "Universal_inc"
|
In den Includedateien muss dazu dann ein erweiterter Guard implementiert werden, der überprüft, ob bestimmte Symbole definiert sind oder nicht, und dem entsprechend include-dateien einbindet.
Im Buch Softwaretechnik in C und C++ von Rolf Isernhagen ist dazu ein schönes Beispiel, das deutlich macht, wo welche includes in einem grösseren Projekt gebraucht werden, und wo nicht. In meiner Buchversion (3. Auflage) ab Seite141 zu finden.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |