Ich möchte die externe Verknüpfung und die interne Verknüpfung und deren Unterschied verstehen.
Ich möchte auch die Bedeutung von
const
Variablen sind standardmäßig intern verknüpft, es sei denn, sie sind anders alsextern
.
Ich möchte die externe Verknüpfung und die interne Verknüpfung und deren Unterschied verstehen.
Ich möchte auch die Bedeutung von
const
Variablen sind standardmäßig intern verknüpft, es sei denn, sie sind anders alsextern
.
Ich denke Interne und externe Verknüpfung in C++ gibt eine klare und prägnante Erklärung:
Eine Übersetzungseinheit bezieht sich auf eine Implementierungsdatei (.c/.cpp) und alle Header-Dateien (.h/.hpp), die sie enthält. Wenn ein Objekt oder eine Funktion innerhalb einer solchen Übersetzungseinheit eine interne Verknüpfung hat, dann ist dieses spezifische Symbol nur für den Linker innerhalb dieser Übersetzungseinheit sichtbar. Wenn ein Objekt oder eine Funktion eine externe Verknüpfung hat, kann der Linker es auch sehen wenn er andere Übersetzungseinheiten bearbeitet. Das Schlüsselwort static, wenn es im globalen Namensraum verwendet wird, erzwingt, dass ein Symbol eine interne Verknüpfung hat. Das extern-Schlüsselwort führt zu einem Symbol mit externer Verknüpfung.
Der Compiler gibt die Verknüpfung von Symbolen so vor, dass:
Nicht-konstante globale Variablen haben standardmäßig eine externe Verknüpfung
Globale Const-Variablen haben standardmäßig eine interne Verknüpfung
Funktionen haben standardmäßig eine externe Verknüpfung
Grundsätzlich
extern linkage
Variable ist in allen Dateien sichtbarinternal linkage
ist in der Einzeldatei sichtbar.Erklärung: const-Variablen sind standardmäßig intern verknüpft, sofern sie nicht als extern deklariert sind.
external linkage
const
globale Variable ist internal linkage
extern const
globale Variable ist external linkage
Ein ziemlich gutes Material über die Verknüpfung in C++
http://www.goldsborough.me/c/c++/linker/2016/03/30/19-34-25-interne_und_externe_Verknüpfung_in_c++/
Die Verknüpfung bestimmt, ob Bezeichner mit identischen Namen auf dasselbe Objekt, dieselbe Funktion oder eine andere Einheit verweisen, auch wenn diese Bezeichner in verschiedenen Übersetzungseinheiten vorkommen. Die Verknüpfung eines Bezeichners hängt davon ab, wie er deklariert wurde. Es gibt drei Arten von Verknüpfungen:
Nur C++ : Sie können auch eine Verknüpfung zwischen C++- und Nicht-C++-Codefragmenten herstellen, was als Sprachverknüpfung .
Quelle: IBM-Programmverknüpfung
In C++
Jede Variable im Dateisystem, die nicht in einer Klasse oder Funktion verschachtelt ist, ist in allen Übersetzungseinheiten eines Programms sichtbar. Dies wird als Außenanbindung weil der Name zum Zeitpunkt des Linkens für den Linker überall sichtbar ist, auch außerhalb dieser Übersetzungseinheit.
Globale Variablen und gewöhnliche Funktionen haben eine externe Verknüpfung.
Statisch Objekt- oder Funktionsname im Dateisystem ist lokal für die Übersetzungseinheit. Das wird genannt als Interne Verknüpfung
Die Verknüpfung bezieht sich nur auf Elemente, die zum Zeitpunkt des Verweises/Ladens Adressen haben; daher haben Klassendeklarationen und lokale Variablen keine Verknüpfung.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.