naked (C++)
Microsoft'a Özgü
özniteliğiyle naked
bildirilen işlevler için derleyici, giriş ve kapsam kodu olmadan kod oluşturur. Satır içi derleyici kodunu kullanarak kendi giriş/sonuç kodu dizilerinizi yazmak için bu özelliği kullanabilirsiniz. Çıplak işlevler, özellikle sanal cihaz sürücülerinin yazılmasında yararlıdır. Özniteliğin naked
yalnızca x86 ve ARM üzerinde geçerli olduğunu ve x64'te kullanılamadığını unutmayın.
Sözdizimi
__declspec(naked) declarator
Açıklamalar
Öznitelik yalnızca işlevin naked
tanımıyla ilgili olduğundan ve tür değiştirici olmadığından çıplak işlevlerin genişletilmiş öznitelik söz dizimi ve __declspec anahtar sözcüğü kullanması gerekir.
İşlev __forceinline anahtar sözcüğüyle de işaretlenmiş olsa bile derleyici çıplak özniteliğiyle işaretlenmiş bir işlev için satır içi işlev oluşturamaz.
Derleyici, özniteliği üye olmayan bir yöntemin naked
tanımı dışında bir şeye uygulanırsa bir hata döndürür.
Örnekler
Bu kod, özniteliğine naked
sahip bir işlev tanımlar:
__declspec( naked ) int func( formal_parameters ) {}
Alternatif olarak:
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
naked
özniteliği, yalnızca işlevin giriş ve sonuç dizileri için derleyicinin kod oluşturma yapısını etkiler. Bu tür işlevleri çağırmak için oluşturulan kodu etkilemez. Bu nedenle, naked
özniteliği işlev türünün bir parçası olarak kabul edilmez ve işlev işaretçileri naked
özniteliğine sahip olamaz. Ayrıca, naked
özniteliği veri tanımına 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şlevin tanımıyla ilgilidir ve işlevin prototipinde belirtilemez. Örneğin, bu bildirim bir derleyici hatası oluşturur:
__declspec( naked ) int func(); // Error--naked attribute not permitted on function declarations
END Microsoft'a Özgü
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin