004
19.12.2008, 17:05 Uhr
0xdeadbeef
Gott (Operator)
|
Link deine Bibliotheken nicht über Pragmas. In den Projekteinstellungen gibt es eine Gruppe Linker mit einem Eintrag Eingabe (oder Eingabedaten, etwas in der Art jedenfalls), wo du die Bibliotheken angeben kannst und solltest.
Warum nicht über pragmas linken? Zum einen kennt die kein anderer Compiler - das ist zwar, zugegeben, bei portablem Code interessanter, das reicht aber schon, um es zu einer schlechten Angewohnheit zu machen. Und was, wenn der msvc für deine Zwecke zu langsamen Code ausspuckt und du das ganze mal durch den Intel-Compiler jagen willst?
Zum zweiten gibst du so die Möglichkeit auf, in verschiedenen Projektkonfigurationen verschiedene Bibliotheken anzulinken. Bei Microsoft-Bibliotheken wirst du feststellen, dass es meistens eine name.lib und eine named.lib gibt, die letztere enthält Debug-Symbole, die du in der Debug-Konfiguration auf jeden Fall willst, um sinnvoll debuggen zu können.
Zum dritten, und jetzt wird's ein bisschen technisch, sind Linkereingaben keine Eigenschaft des Quellcodes. Punkt 2 verdeutlicht das schon recht anschaulich, aber der Punkt greift auch ganz allgemein. Stell dir zum Beispiel vor, dein Projekt wächst, und du hast irgendwann mehrere Unterprojekte - ein Spiel und einen Mapeditor zum Beispiel - die große Teile gemeinsamen Codes verwenden. In diesem Fall wäre die offensichtliche Lösung natürlich, den gemeinsamen Code in eine Bibliothek auszulagern und die gemeinsame Bibliothek an beide zu linken. Und jetzt musst du höllisch aufpassen, wo du deine Pragmas hinschreibst, damit nicht sowohl das Programm als auch die Bibliothek die Abhängigkeiten einbinden und den Linker durcheinanderbringen und/oder Speicher und Laufzeit verschwenden.
Oder du machst es wie jeder vernünftige Mensch seit den 70er Jahren und linkst deine Bibliotheken so, wie es immer gedacht war - im Buildsystem. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |