Naked Funkcje
Programu Microsoft
naked Atrybut klasy magazynowania jest rozszerzenie specyficzne dla firmy Microsoft do języka C.Do funkcji zadeklarowanych z naked atrybut klasy magazynowania, kompilator generuje kod bez kodu prologu i epilog.Pisać własne sekwencje kod prolog/epilog przy użyciu kodu assembler wbudowanej, można użyć tej funkcji.Owies funkcje są szczególnie użyteczne w piśmie sterowniki urządzeń wirtualnych.
Ponieważ naked atrybut tylko istotne dla zdefiniowania funkcji i nie jest modyfikator typu, funkcje bez nadruku należy użyć składni atrybutów rozszerzonych, opisane w Rozszerzonych atrybutów klasy magazynowania.
Poniższy przykład definiuje funkcję z naked atrybut:
__declspec( naked ) int func( formal_parameters )
{
/* Function body */
}
Lub, alternatywnie:
#define Naked __declspec( naked )
Naked int func( formal_parameters )
{
/* Function body */
}
naked Atrybut ma wpływ na charakter generowanie kodu kompilatora dla funkcji prologu i epilog sekwencji.Nie wpływa na kod, który jest generowany dla wywoływania tych funkcji.W ten sposób naked atrybut nie jest uważany za część funkcji typu i nie mają wskaźników funkcji naked atrybut.Ponadto naked nie można zastosować atrybutu do definicji danych.Na przykład poniższy kod generuje błędy:
__declspec( naked ) int i; /* Error--naked attribute not */
/* permitted on data declarations. */
naked Atrybut ma zastosowanie tylko do definicji funkcji i nie może być określony w prototyp funkcji.Następujące oświadczenie generuje błąd kompilatora:
__declspec( naked ) int func(); /* Error--naked attribute not */
/* permitted on function declarations. */ \
KONIEC Microsoft szczególne