AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[C-Präprozessor]

Ein Thema von Chewie · begonnen am 23. Okt 2004 · letzter Beitrag vom 24. Okt 2004
Antwort Antwort
Seite 2 von 2     12   
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#11

Re: [C-Präprozessor]

  Alt 24. Okt 2004, 10:40
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.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: [C-Präprozessor]

  Alt 24. Okt 2004, 11:06
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?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz