Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [C-Präprozessor] (https://www.delphipraxis.net/32441-%5Bc-praeprozessor%5D.html)

OregonGhost 24. Okt 2004 10:40

Re: [C-Präprozessor]
 
Ich versuch's nochmal ein wenig anders zu sagen.
Eine Unit ist ein Codemodul, das Funktionen enthält und diese gegebenenfalls exportiert, und das ganze in einem Stück (daher ja auch Unit).
In C/C++ gibt es dieses Konzept nicht. Wenn man Funktionen aus anderen Modulen verwenden will, muss man diese explizit dem Compiler bekannt machen, indem man sie deklariert. Anders als der Delphi-Compiler weiß ein C/C++-Compiler in dem Moment, in dem er ein Codemodul kompiliert, rein gar nichts über die anderen Module, auch wenn er Funktionen, die in diesen anderen Modulen enthalten sind, aufrufen soll. Deshalb muss man ihm die Signatur geben, er vermerkt diese in der Objektdatei, und am Ende (und zwar wirklich als eigenes Programm) muss der Linker, der wiederum gar nichts vom Compiler weiß, diese Signaturen auswerten und hoffen, dass er jede Funktionsdefinition (!) nur einmal angeboten bekommt, weil er sonst im Normalfall nicht weiß, welche Version er verwenden soll.

Aus diesem Grund wird unter Umständen jede Objektdatei, die deine Headerdatei inkludiert, die Definitionen (d.h. den Code) der Funktionen enthalten, genauso als hättest du in jedem Quellcodemodul die Funktion erneut definiert.

Und ich sag's nochmal: In Delphi ist das ganze genauso, mit dem Unterschied, dass du die Deklaration und die Definition in ein und derselben Datei unterbringst, während du in C/C++ eigentlich nur aus Bequemlichkeitsgründen die Deklarationen auslagerst. Ausnahme sind wie oben genannt inline-Funktionen.
Aufgrund der Architektur gehören in C/C++ in Header-Dateien also weder Daten- noch Funktionsdefinitionen.

Chewie 24. Okt 2004 11:06

Re: [C-Präprozessor]
 
Zitat:

Zitat von OregonGhost
Aufgrund der Architektur gehören in C/C++ in Header-Dateien also weder Daten- noch Funktionsdefinitionen.

Was genau verstehst du unter Datendefinitionen in diesem Zusammenhang?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz