naked (C++)
Microsoft özel
İle bildirilen işlevler için naked özniteliğini, derleyici önsöz ve epilog kodu olmadan kod üretir. Satır içi assembler kodunu kullanarak kendi önsöz/epilog kod dizileri yazmak için bu özelliği kullanabilirsiniz. Çýplak işlevler sanal aygıt sürücüleri yazılı olarak özellikle yararlıdır. Dikkat naked özniteliği yalnızca x 86 geçerlidir ve kullanılamaz x64 veya Itanium.
__declspec(naked) declarator
Notlar
Çünkü naked özniteliği yalnızca bir işlev tanımı için geçerli olduğunu ve bir tür değiştiricisi değil, çýplak işlevleri, uzatılmış öznitelik sözdizimi kullanmalıdır ve __declspec anahtar sözcüğü.
İşlevi de ile işaretlenmiş olsa bile, derleyici çýplak özniteliğiyle işaretlenmiş bir işlev için bir satır içi işlevi üretilemiyor __forceinline anahtar sözcüğü.
Derleyici bir hata varsa sorunları naked özniteliği üye olmayan yöntem tanımının dışında herhangi bir şey için uygulanır.
Örnekler
Bu kod ile bir işlevi tanımlar naked özniteliği:
__declspec( naked ) int func( formal_parameters ) {}
Veya alternatif olarak:
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
naked Özniteliği derleyici 's kod oluşturma işlevinin önsöz ve epilog serilerinin doğasına etkiler. Bu tür işlevleri çağırmak için oluşturulan kodu etkilemez. Bu nedenle, naked özniteliği değil işlevin türü bir parçası kabul ve işlev işaretçileri olamaz naked özniteliği. Ayrıca, naked özniteliği bir veri tanımı için uygulanamaz. Örneğin, bu kod örneği, bir hata oluşturur:
__declspec( naked ) int i; // Error--naked attribute not
// permitted on data declarations.
naked Özniteliği yalnızca işlev tanımına uygun olan ve işlevin prototipi belirtilemez. Örneğin, bu bildirim bir derleyici hatası oluşturur:
__declspec( naked ) int func(); // Error--naked attribute not
// permitted on function declarations
SON Microsoft özel