Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Definition einer "Translation Unit"

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.11.2006, 19:41 Uhr
~Gast
Gast


hi

ich habe leicht Verständnissprobleme mit dem Begriff Translation Unit (bezogen auf C);

in der Literatur von Bruce Eckel (TIC 2nd Edition) und in anderen Quellen wird eine Translation Unit (TU) folgendermaßen beschrieben:

1) Each separate C implementation file (with an extension of .c) is a translation unit.
That is, the compiler is run separately on each translation unit, and when it is running it
is aware of only that unit.

=> hier verstehe ich als TU eine C-Source-Datei an sich, eine Datei, aus der der Compiler
den Code / Text des Progs erstellt, also Dateien, mit Funktions-DEFINITIONEN und
Dateien, in denen einfach Variablen definiert werden (-> Speicherplatzreseriverung);

Compiler hier im Sinne aller "Teile eines Übersetzers", die vor dem Linker aktiv sind ?!?!?!

somit sind für mich anhand dieser Definition KEINE TUs:
- stand-alone Header-Files

- Dateien, die nur Definitionen von 'user-defined' Datentypen (z.B. Structs) enthalten,
also keine Speicherplatz-Reservierung fürs Programm verursachen (wobei solche
Dateien nicht viel Sinn machen, oder !?)

- Object-Files und somit keine "vorübersetzten" Libraries, weil beide keine
Implementation-Files (Endung .c) sind, sondern bereits "vom Compiler übersetzte"
Object-Files (Compiler-Arbeit im o.g. Sinne ist bereits getan), auf denen nun nur noch
der Linker arbeitet (im Gegensatz zum Compiler im o.g. Sinne!!!)


=> weiterhin würde ich im Sinne der Definition als TUs auffassen:

- obige eigene Interpretation einer TU + deren inkludierte Header-Files

- Libraries, die im Source-Code vorliegen, also nicht vor-kompiliert sind (solls auch für C geben), weil sie (da nicht-vorkompiliert) zusammen mit der sie referenzierenden
Source-File (Endung .c) zusammen in ein Object-File übersetzt würden !?!?!?
=> in diesem Fall bestünde also eine Object-File aus Source - Library-Source, oder
ginge dies nicht, dh. müssen Libraries, die als Source-Files separat kompiliert
werden ?!?!?!



2) For each translation unit, the compiler creates an object file, with an extension of ".o" or
".obj" or something similar. These object files, along with the necessary start-up code,
must be collected by the linker into the executable program.

=> diese Definition bestätigt mein oben genanntes eigenes Verständnis einer TU



3) Ein C-Programm besteht im Allgemeinen aus mehreren separat übersetzbaren Dateien:
Programm = translation-unit { translation-unit }

=> hier scheint eine TU jede Object-File zu sein, also widerspricht den ogiben
Ausführungen (TU = Endung .c)


Weiterhin, wurde die Definition einer TU für C++ erweitert oder anderweitig modifiziert !?!?

Schließlich gibt es in C++ viele neue Konzepte, z.B. Namespaces, Klassen (also Kapselung von "Funktionen"), etc. ?!?!?

Danke schon mal im Voraus für die Mühe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.11.2006, 20:16 Uhr
ao

(Operator)


Im Prinzip hast du es schon richtig verstanden. Es scheint strittig zu sein (zwischen der Aussage 3 und den beiden anderen) ob der Input (.c-File) oder der Output (.o-File) der Übersetzung als Translation Unit gilt.

Persönlich habe ich bisher immer die .c-Files als TU verstanden, aber mit der anderen Sichtweise könnte ich mich auch anfreunden. Ist das denn überhaupt ein bedeutsamer Unterschied?

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: