Partager via


naked (C++)

Spécifique à Microsoft

Pour les fonctions déclarées avec l'attribut naked, le compilateur génère un code sans code de prologue et d'épilogue. Utilisez cette fonctionnalité pour écrire vos propres séquences de code de prologue/épilogue utilisant du code assembleur inline. Les fonctions naked sont particulièrement utiles pour l'écritures de pilotes de périphériques virtuels. Notez que l'attribut naked est uniquement valide sur x86 et ARM, et pas disponible sur x64.

__declspec(naked) declarator

Notes

Comme l'attribut naked est uniquement approprié à la définition d'une fonction et pas d'un modificateur de type, les fonctions naked doivent utiliser la syntaxe d'attribut étendu et le mot clé __declspec.

Le compilateur ne peut pas générer une fonction inline pour une fonction marquée avec l'attribut naked, même si la fonction est également identifiée avec le mot clé __forceinline.

Le compilateur émet une erreur si l'attribut naked est appliqué à une valeur 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 ) {}

Sinon, aussi :

#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 prologues 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. En outre, l'attribut naked ne peut pas être appliqué à une définition de données. Par exemple, l'exemple de code suivant génère une erreur :

__declspec( naked ) int i;       // Error--naked attribute not
                                 // permitted on data declarations.

L'attribut naked est pertinent uniquement à la définition de la fonction et ne peut pas être spécifié dans le prototype de fonction. Par exemple, cette déclaration génère une erreur de compilation :

__declspec( naked ) int func();  // Error--naked attribute not 
                                 // permitted on function declarations

END Spécifique à Microsoft

Voir aussi

Référence

__declspec

Mots clés C++

Appels de fonction naked