guten,
hätte da auch gleich ne frage zu diesen bedingten makros. also das hier:
|
Source code
|
1
|
#ifndef _HELLO_H_
|
zwei fragen hierzu:
1. diese _HELLO_H_ konstante, wo kommt die her bzw. ist das eine art konvention ? ich verstehe nicht wirklich wo die herkommt. in büchern zu diesem thema sehen die defs aber auch genauso aus, mit diesen unterstrichen. also semantisch kann ich mir nun ausmalen was das heisst, nämlich frägt er da ja dann ob hello.h noch nicht eingebunden wurde. das soll den zweck haben, so hab ich weiter gelesen, dass die hello.h datei nich mehrmals definiert wird. könnte mir da mal jemand nen quellcode schreiben, der absichtlich nen fehler provoziert ? ich meine es macht doch nichts aus wenn ich zwei module habe, und in jedem die hello.h "reininclude". dann steht der code eben zweimal da ? so als provozierende frage. natürlich weiss ich dass da dann der code doppelt da steht bzw. mehr speicher verbraucht wird. aber wie ist es denn mit den adressen z.b.. wenn ich hello.h in modul 1 und 2 definiere, dann beutzt modul2 doch ne andere adresskonvention als modul1, oder ? hoffe man kann einigermaßen verstehen was ich meine.
2. dann wenn der compiler die oben besagte anweisung erreicht, und dann dieses ifndef sieht, und nachschaut ob die headerdatei schon definiert wurde, setzt der compiler dann _HELLO_H von 0 auf 1 oder sowas, oder ändert er dann den wert, sodass er falls er nochmal drüberstolpert, dann merkt dass er die datei schonmal eingebunden hat ? oder bin ich jetzt total auf dem falschen pfad.
und ja eigentlich sinds in 1 mehrere fragen aufeinmal. sorry

hab mich mit der thematik noch nie so richtig befasst wenn ich ehrlich bin und beim lesen heute hab ich nicht wirklich antworten zu ein paar sachen gefunden, die ich mich so dazu gefragt habe.
gruß