Moin, öfters sehe ich, das in Bibliotheken zum Anfang ein #define _NameDerDatei_ gemacht wird, kann mir jemand erläutern, wozu? Ist dass dazu da, dass andere Libs darauf reagieren können, z.B. je nach unterschiedlicher I²C Lib andere Befehle nutzen?
> Ist dass dazu da, dass andere Libs darauf reagieren können, z.B. je nach > unterschiedlicher I²C Lib andere Befehle nutzen? Wäre eine Möglichkeit. Oft sind das aber nur sog. Include Guards: Die Header-Darei beginnt in diesem Fall so: #ifndef NameDerDatei #define NameDerDatei // hier kommt dann der Inhalt des Files #endif Sinn der Sache, ist es, dass diese Header-Datei beim Compilieren von 1 c-File nur ein einziges mal durch den Compiler gejagt wird. Selbst dann, wenn das Header-File über Umwege indirekt mehrmals includet wird.
Hier gilt es übrigens auch, folgendes zu beachten: Führende Unterstriche sind in der Namensgebung für Anwender verboten. Dieses Privileg wurde nur den Entwicklern der C-Libs und den Compilerbauern zugesagt.
Danke, Patrick.... Ich haette sonst weiter als rechtschaffenner Bürger verbotene Dinge getan. :-) gruß, Bjoern
Bjoern Buettner wrote: > Ich haette sonst weiter als rechtschaffenner Bürger verbotene Dinge > getan. :-) Nö, so schlimm ist es nicht. "Verboten" ist stark übertrieben, man sollte höchstens "unschön" sagen. Der Compiler kann ja nicht unterscheiden, ob der Unterstrich in nem Library-Header oder in Deinem eigenen C-Code auftaucht. Für ihn ist er daher immer ein zulässiges Zeichen. Peter
> "Verboten" ist stark übertrieben, ...
Nein, ist es nicht. Diese Konvention gilt, damit Compiler und
Bibliothek ("The implementation" im Sinne des C-Standards) eine
Möglichkeit haben, Bezeichner für ihre internen Zwecke zu benutzen,
die auf keinen Fall mit der Applikatoin kollidieren. Daher die
Trennung in `implementation name space' und `application name
space'.
Selbstverständlich, so lange niemand anders deinen Bezeichner benutzt,
passiert dabei nichts. Aber das kann sich natürlich bereits mit der
nächsten Version der Bibliothek ändern.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.