Maison > développement back-end > C++ > Comment fonctionnent `__attribute__((constructor))` et `__attribute__((destructor))` en C/C ?

Comment fonctionnent `__attribute__((constructor))` et `__attribute__((destructor))` en C/C ?

Patricia Arquette
Libérer: 2024-12-20 00:17:09
original
854 Les gens l'ont consulté

How Do `__attribute__((constructor))` and `__attribute__((destructor))` Work in C/C  ?

Comment fonctionnent __attribute__((constructeur)) et __attribute__((destructeur))

Quand fonctionne __attribute__((constructeur)) Exécuter ?

Cet attribut s'exécute lorsqu'une bibliothèque partagée est chargée, généralement lors du démarrage du programme.

Pourquoi deux parenthèses ?

Tous les attributs GCC suivent cette syntaxe, probablement pour les distinguer des appels de fonction.

La nature des attributs

attribut est spécifique à GCC syntaxe, pas une fonction ou une macro.

Compatibilité

__attribute__((constructor)) et __attribute__((destructor)) fonctionnent à la fois en C et en C.

Exigence statique de fonction

Les fonctions attribuées à __attribute__((constructor)) et __attribute__((destructor)) n'ont pas besoin d'être statiques.

__attribute__((destructor)) Run Time

Le destructeur s'exécute lorsque la bibliothèque partagée est déchargée, généralement à la sortie du programme.

Constructeur et Mécanique des destructeurs

Les fichiers objets partagés contiennent des sections spéciales (.ctors et .dtors) qui font référence à des fonctions marquées avec des attributs de constructeur et de destructeur. Le chargeur dynamique appelle ces fonctions lors du chargement et du déchargement de la bibliothèque. Des mécanismes similaires existent dans l'éditeur de liens statiques pour le démarrage et l'arrêt.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal