C++ definiert den Begriff einer "Übersetzungseinheit". Eine Übersetzungseinheit ist ein Ankerpunkt, an dem die Übersetzung beginnt, und ein Programm umfasst typischerweise mehrere solcher Übersetzungseinheiten. Welche Einheiten als "Übersetzungseinheit" an den Compiler übergeben werden, hängt von den Einstellungen in Ihrer IDE, Makefiles und anderen Konfigurationen ab. Aber informell die meisten Konfigurationen nehmen Ihre und .c
- Dateien als Übersetzungseinheiten.
Um es einfacher, wir zu einem Programm dann mehrere Binärdateien einer Übersetzungseinheit als etwas, von dem ein Compiler eine binäre macht, und ein Linker kombiniert denken kann.
So Header-Dateien sind in der Regel nicht als Übersetzungseinheiten konfiguriert, und sie ergeben typischerweise keine binäre auf ihre eigenen, selbst wenn sie Quellcode enthalten. Sie werden eher aus Übersetzungseinheiten importiert und zusammen mit ihnen übersetzt.
Wenn solche Header-Dateien viel Quellcode enthalten, der in mehreren Übersetzungseinheiten enthalten sein wird, ist es sinnvoll, sie einmal (vor) zu kompilieren und so viele Informationen wie möglich in einem Zwischenergebnis zu speichern Das Kompilieren der eigentlichen Übersetzungseinheit ist schneller. Das spart Zeit, aber das "intermediate binary" ist etwas internes und nicht exponiert.
jedoch vom Inhalt und von der Art des Quellcodes darin, eine Header-Datei ist von anderen Quellcodedateien nicht unterscheidbar. Sie können eine "Header-Datei" an den Compiler als Übersetzungseinheit übergeben, und der Compiler wird tatsächlich eine "normale" Binärdatei daraus machen. Es ist nur so, dass sie normalerweise nicht als Root für die Kompilierung deklariert werden.
Hoffe, dass hilft.
Es gibt so etwas wie einen nicht-vorkompilierte nein, so das Konzept der ‚vorkompilierte Binär‘ ist nicht wirklich eine Sache, etwas anderes zu in erster Linie zu vergleichen. – EJP
danke für das Hinweis ... Ich denke, es sollte als vorkompilierte Quelle aufgerufen werden – bharath