Wie __attribute__((constructor)) und __attribute__((destructor)) funktionieren
Wann funktioniert __attribute__((constructor)) Ausführen?
Dieses Attribut wird ausgeführt, wenn eine gemeinsam genutzte Bibliothek vorhanden ist geladen, normalerweise während des Programmstarts.
Warum zwei Klammern?
Alle GCC-Attribute folgen dieser Syntax, vermutlich um sie von Funktionsaufrufen zu unterscheiden.
Natur der Attribute
Attribut ist ein GCC-spezifische Syntax, keine Funktion oder ein Makro.
Kompatibilität
__attribute__((constructor)) und __attribute__((destructor)) funktionieren sowohl in C als auch in C .
Funktion statisch Anforderung
Die mit __attribute__((constructor)) und __attribute__((destructor)) attributierten Funktionen müssen nicht statisch sein.
__attribute__((destructor)) Ausführen Zeit
Der Destruktor wird ausgeführt, wenn die gemeinsam genutzte Bibliothek entladen wird. typischerweise beim Beenden des Programms.
Konstruktor- und Destruktormechanik
Gemeinsam genutzte Objektdateien enthalten spezielle Abschnitte (.ctors und .dtors), die auf Funktionen verweisen, die mit Konstruktor- und Destruktorattributen gekennzeichnet sind. Der dynamische Lader ruft diese Funktionen beim Laden und Entladen der Bibliothek auf. Ähnliche Mechanismen gibt es im statischen Linker sowohl für das Starten als auch für das Herunterfahren.
Das obige ist der detaillierte Inhalt vonWie funktionieren „__attribute__((constructor))' und „__attribute__((destructor))' in C/C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!