naked (C++)
Spécifique à Microsoft
Pour les fonctions déclarées avec l'attribut d' naked , le compilateur génère un code sans le code du prologue et d'épilogue.Vous pouvez utiliser cette fonction pour écrire vos propres séquences de code du prologue/épilogue à l'aide de le code assembleur inline.Les fonctions naked sont en particulier par écrit les pilotes de périphériques virtuels utiles.Notez que l'attribut d' naked est uniquement valide sur x86, et est pas disponible sur x64 ou Itanium.
__declspec(naked) declarator
Notes
Étant donné que l'attribut d' naked est uniquement approprié à la définition d'une fonction et n'est pas un modificateur de type, les fonctions naked doivent utiliser la syntaxe d'attribut étendu et le mot clé de __declspec .
Le compilateur ne peut pas générer une fonction inline pour une fonction marquée avec l'attribut de type naked, même si la fonction est également marquée avec le mot clé de __forceinline .
Le compilateur génère une erreur si l'attribut d' 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 d' naked :
__declspec( naked ) int func( formal_parameters ) {}
Ou, vous pouvez aussi :
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
L'attribut d' naked affecte uniquement la nature de la génération de code du compilateur pour les séquences des prologues et de épilogue de la fonction.Il n'affecte pas le code généré pour appeler de fonctions.Ainsi, l'attribut d' naked n'est pas considéré comme une partie du type de la fonction, et les pointeurs fonction ne peuvent pas avoir l'attribut d' naked .en outre, l'attribut d' 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 d' naked est pertinent 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 de compilation :
__declspec( naked ) int func(); // Error--naked attribute not
// permitted on function declarations
détail de FIN Microsoft