Ich lese gerade das von Meyers geschriebene "Effective C ++" und bin auf den Begriff "Übersetzungseinheit" gestoßen.
Könnte mir bitte jemand eine Erklärung geben für:
1) Was genau ist das?
2) Wann sollte ich in Betracht ziehen, es beim Programmieren mit C ++ zu verwenden?
3) Wenn es nur mit C ++ zusammenhängt oder mit anderen Programmiersprachen verwendet werden kann
Ich könnte es bereits verwenden, ohne den Begriff zu kennen ....
Antworten:
Von hier aus : ( Wayback Machine Link )
quelle
Eine Übersetzungseinheit ist in jeder Hinsicht eine Datei (.c / .cpp), nachdem sie alle Header-Dateien enthält.
http://msdn.microsoft.com/en-us/library/bxss3ska%28VS.80%29.aspx
quelle
Eine schwer zu beantwortende Frage. Der C ++ - Standard besagt:
Für die meisten Absichten und Zwecke ist eine Übersetzungseinheit eine einzelne C ++ - Quelldatei und der Header oder andere Dateien, die sie über den Präprozessor-Mechanismus #include enthält.
Zu Ihren anderen Fragen:
Sie können es nicht nicht berücksichtigen - Übersetzungseinheiten sind die Basis eines C ++ - Programms.
Andere Sprachen haben ähnliche Konzepte, aber ihre Semantik wird sich geringfügig unterscheiden. Die meisten anderen Sprachen verwenden beispielsweise keinen Präprozessor.
quelle
Das Buch macht es klar genug. Wenn Meyers von einer "Übersetzungseinheit" spricht, meint er eine Quellcodedatei.
quelle
Neben dem ODR ist die Übersetzungseinheit wichtig für die Definition unbenannter Namespaces, die eine der alten Verwendungen von "statisch" ersetzt.
Ich glaube, ich habe immer noch nicht genug Punkte, um einen Kommentar unter der obersten Antwort hinzuzufügen.
quelle
Eine Übersetzungseinheit ist Code, der an den eigentlichen Compiler übergeben wird. Dies bedeutet normalerweise, dass die Ausgabe vom Ausführen des Präprozessors in der C-Datei erfolgt.
quelle
C- und C ++ - Programme bestehen aus einer oder mehreren Quelldateien, von denen jede einen Teil des Programmtextes enthält. Eine Quelldatei wird zusammen mit ihren Include-Dateien (Dateien, die mit der Präprozessor-Direktive #include enthalten sind), jedoch keine Codeabschnitte enthalten, die durch Direktiven zur bedingten Kompilierung wie #if entfernt wurden, als "Übersetzungseinheit" bezeichnet.
quelle
Laut MSDN : C- und C ++ - Programme bestehen Programme aus einer oder mehreren Quelldateien, von denen jede einen Teil des Programmtextes enthält. Eine Quelldatei wird zusammen mit ihren Include-Dateien (Dateien, die mit der Präprozessor-Direktive #include enthalten sind), jedoch keine Codeabschnitte enthalten, die durch Direktiven zur bedingten Kompilierung wie #if entfernt wurden, als "Übersetzungseinheit" bezeichnet.
quelle
Jede cpp / c-Datei (Implementierungsdatei) wird in eine Übersetzungseinheit (dh eine Objektdatei (.obj)) konvertiert. Die Header in der cpp-Datei werden durch den tatsächlichen Text aus den Headerdateien ersetzt.
quelle
Wie andere gesagt haben, ist eine Übersetzungseinheit im Grunde der Inhalt einer Quelldatei nach der Vorverarbeitung. Es ist die oberste Produktion in der Sprachgrammatik; Sie müssten sich nur darum kümmern, wenn Sie einen C- oder C ++ - Compiler schreiben würden.
quelle
Meiner Ansicht nach ist eine "Übersetzungseinheit" normalerweise eine einzelne Quelldatei "nach der Vorverarbeitung". Weitere Informationen finden Sie auf dieser MSDN-Seite. http://msdn.microsoft.com/en-us/library/bxss3ska(v=vs.80).aspx
quelle