Übersetzung Einheit in C und C++
Gibt es einen Unterschied zwischen dem, was eine übersetzungseinheit ist in C++ und C?
In anderen Beiträgen habe ich gelesen, dass eine header-und source-Datei ist eine übersetzungseinheit, aber
kann ein source-file allein aufgerufen werden, eine übersetzung Einheit in C++, wo es enthält alle Definitionen in einer Datei?
- Vorprozessierten source-Dateien übersetzungseinheiten.
- Ist das nicht eine Antwort?
- die rep-cap? 🙂
- Nein, nur manchmal denke ich, dass ein "Antwort" sollte ein Mindestmaß an text, und wenn ich nicht so viel zu sagen, hab nur ein Kommentar...
- Sie haben einen Punkt hier. Ich glaube allerdings, dass es eine Frage der vermittelten Informationen in einer so kurzen text wie möglich. Und Ihr Kommentar (wieder meiner Meinung nach) perfekt Antworten der Beschreibung.
- Es ist tatsächlich wahr, dass einige der "Berühmten Antworten" sind Einzeiler... nenne es eine persönliche Abneigung; es gibt keine ausgeklügelte Grund für die meisten Dinge, die ich tun 🙂
- mögliche Duplikate von Was ist ein "translation unit" in C++
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer übersetzungseinheit ist nicht "eine header-und eine Quellcode-Datei". Es könnte auch ein tausend-header-Dateien (und tausend source-Dateien zu).
Einer übersetzungseinheit ist einfach das, was gemeinhin bekannt als "source-Datei" oder eine ".cpp-Datei" nachdem es vorverarbeitet. Wenn die Quell-Datei
#include
s andere Dateien, die text-Dateien bekommt, enthalten in der übersetzungseinheit durch den Präprozessor. Es gibt keinen Unterschied zwischen C und C++ in dieser Angelegenheit..cpp
statt mit einem.h
zu setzen, Klasse Erklärung. Kann ich nennen, dass.cpp
eine übersetzungseinheit?#include
Mechanismus kann man einmal schreiben, und der compiler kopieren für Sie: es ist eine Frage der code-Organisation, obwohl, und hat nicht viel zu tun mit dem Konzept der übersetzungseinheit.#include
. Es ist keine gute Idee, obwohl.Header Hinzugefügt wird .cpp-Datei, die auf die Vorverarbeitung, also der compilator ist im Grunde arbeitet auf ein großes Stück code, enthält sowohl .cpp und alle .h Hinzugefügt "#include".
Dass die übersetzung Einheit.
Es hängt davon ab, was meinen Sie mit "Unterschied". C-und C++
definieren Sie ähnlich: im Grunde, dass alles kompiliert wird, wenn Sie
kompilieren eine source-Datei (und damit alle enthaltenen Header, erweitert
Makros, etc.). Aber das ist nicht das gleiche, was in den beiden Sprachen;
Dinge wie Vorlagen bedeuten, dass übersetzungseinheiten tun, Verhalten sich anders
in C++ als in C (C++ hat die one definition rule, zum Beispiel.)
Einer übersetzungseinheit ist eigentlich das, was Sie bekommen, sobald die Quell-und header-Dateien bestanden haben, durch Vorverarbeitung (die erweitert die source mit den header-Dateien) und Vorkompilierung. Verwendet der compiler die übersetzungseinheit zu produzieren .obj-Dateien, die Sie in Ihrem compiler-Ausgabe-Verzeichnis.
Satz von Quellcode-Dateien gesehen, die vom compiler übersetzt und als eine Einheit