Heim >Backend-Entwicklung >C++ >Wie leitet C die Array-Größe in Funktionsvorlagen ab?
Im bereitgestellten C-Code wird eine Funktionsvorlage namens cal_size deklariert, die ein Array als Argument akzeptiert. Die Funktionsvorlage leitet die Größe des Arrays aus dem Argumenttyp ab und gibt sie aus.
Es stellt sich die Frage: Wie wird der Vorlagenparameter N automatisch auf die richtige Größe des Arrays initialisiert, ohne ihn explizit in der Funktion anzugeben? Anruf?
Der Schlüssel zum Verständnis dieses Verhaltens liegt im Prozess des Abzugs von Vorlagenargumenten. Wenn eine Vorlagenfunktion aufgerufen wird, verwendet der Compiler den tatsächlichen Typ des Arguments, um die Werte der Vorlagenparameter abzuleiten.
Im Fall von cal_size ist der Argumenttyp ein Array von Elementen vom Typ T mit a angegebene Größe N. Der Compiler leitet T aus dem Elementtyp des Arrays und N aus der Größe des Arrays ab.
Wenn das Argument a an die Funktion übergeben wird, leitet der Compiler T als ab int und N als 6. Wenn b übergeben wird, ist T ebenfalls int und N ist 1.
Basierend auf den abgeleiteten Werten von T und N generiert der Compiler separate, spezialisierte Versionen der Funktionsvorlage. Für jeden Aufruf wird eine Spezialfunktion mit den spezifischen Typ- und Größeninformationen des Argumentarrays erstellt.
In diesem speziellen Fall werden zwei Spezialfunktionen generiert:
The Die Hauptfunktion bedeutet im Wesentlichen den Aufruf dieser Spezialfunktionen.
Das obige ist der detaillierte Inhalt vonWie leitet C die Array-Größe in Funktionsvorlagen ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!