naked (C++)
Section spécifique à Microsoft
Pour les fonctions déclarées avec l’attribut, le compilateur génère du naked
code sans prolog et code épilogue. Vous pouvez utiliser cette fonctionnalité pour écrire vos propres séquences de code de prologue/épilogue à l'aide de code assembleur inline. Les fonctions naked sont particulièrement utiles pour l'écriture de pilotes de périphériques virtuels. Notez que l’attribut naked
est valide uniquement sur x86 et ARM et n’est pas disponible sur x64.
Syntaxe
__declspec(naked) declarator
Notes
Étant donné que l’attribut naked
est uniquement pertinent pour la définition d’une fonction et n’est pas un modificateur de type, les fonctions nues doivent utiliser la syntaxe d’attribut étendue et la __declspec mot clé.
Le compilateur ne peut pas générer une fonction inline pour une fonction marquée avec l’attribut nu, même si la fonction est également marquée avec le __forceinline mot clé.
Le compilateur émet une erreur si l’attribut naked
est appliqué à quelque chose d’autre que la définition d’une méthode non membre.
Exemples
Ce code définit une fonction avec l’attribut naked
:
__declspec( naked ) int func( formal_parameters ) {}
Ou, alternativement :
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
L'attribut naked
affecte uniquement la nature de la génération de code du compilateur pour les séquences de prologue et d'épilogue de la fonction. Il n'affecte pas le code généré pour appeler de telles fonctions. Ainsi, l'attribut naked
n'est pas considéré comme faisant partie du type de la fonction, et les pointeurs fonction ne peuvent pas avoir l'attribut naked
. De plus, l'attribut naked
ne peut pas être appliqué à une définition de données. Par exemple, cet exemple de code génère une erreur :
__declspec( naked ) int i;
// Error--naked attribute not permitted on data declarations.
L'attribut naked
se rapporte uniquement à la définition de la fonction et ne peut pas être spécifié dans le prototype de la fonction. Par exemple, cette déclaration génère une erreur du compilateur :
__declspec( naked ) int func(); // Error--naked attribute not permitted on function declarations
FIN de la section spécifique à Microsoft
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour