Aracılığıyla paylaş


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.

__declspec
Anahtar Sözcükler
Naked İşlevi Çağrıları