012
25.08.2006, 12:46 Uhr
stephanw
localhorst
|
"extern" macht vor allem vor Variablen Sinn. Die Zeile "int x;" ist nämlich nicht nur Deklaration, sonder auch Definition. Würde das in mehreren Übersetzungseinheiten vorkommen, würde das Programm nicht linken, da x mehrfach definiert wird. Schreibt man "extern int x;" in den Header, heißt das: "wird irgendwoanders definiert". In irgendeinem cpp-File muss diese Definition dann natürlich auch stattfinden: "int x;" oder "int x=7;".
Bei Funktionen ist "void f();" nur eine Deklaration. Dies impliziert, dass die Definition woanders stehen muss, wenn sie nicht in der aktuellen Übersetzungseinheit zu finden ist. "extern" ist für das include in anderen Cpp-Files also überflüssig. Die Frage danach, was passiert, wenn derselbe Header im eigenen Cpp-File eingebunden wird, ist berechtigt. Vielleicht (meine Vermutung) wird in diesem Fall "extern" ignoriert, da die Definition ja in der aktuellen Übersetzungseinheit zu finden ist.
Grüße -- Reden ist Schweigen und Silber ist Gold. |