telanjang (C++)
Khusus Microsoft
Untuk fungsi yang dideklarasikan dengan naked
atribut , pengkompilasi menghasilkan kode tanpa kode prolog dan epilog. Anda dapat menggunakan fitur ini untuk menulis barisan kode prolog/epilog Anda sendiri dengan menggunakan kode perakit sebaris. Fungsi naked sangat berguna dalam menulis driver perangkat virtual. Perhatikan bahwa naked
atribut hanya valid pada x86 dan ARM, dan tidak tersedia di x64.
__declspec(naked) declarator
naked
Karena atribut hanya relevan dengan definisi fungsi dan bukan pengubah jenis, fungsi telanjang harus menggunakan sintaks atribut yang diperluas dan kata kunci __declspec.
Pengkompilasi tidak dapat menghasilkan fungsi sebaris untuk fungsi yang ditandai dengan atribut telanjang, bahkan jika fungsi juga ditandai dengan kata kunci __forceinline .
Pengkompilasi mengeluarkan kesalahan jika naked
atribut diterapkan ke apa pun selain definisi metode non-anggota.
Kode ini mendefinisikan fungsi dengan naked
atribut :
__declspec( naked ) int func( formal_parameters ) {}
Atau, secara bergantian:
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
Atribut naked
hanya memengaruhi sifat pembuatan kode kompilator untuk barisan prolog dan epilog fungsi. Atribut tersebut tidak memengaruhi kode yang dihasilkan untuk memanggil fungsi tersebut. Dengan demikian, atribut naked
tidak dianggap sebagai bagian dari tipe fungsi, dan penunjuk fungsi tidak dapat memiliki atribut naked
. Selain itu, atribut naked
tidak dapat diaplikasikan ke definisi data. Misalnya, sampel kode ini menghasilkan kesalahan:
__declspec( naked ) int i;
// Error--naked attribute not permitted on data declarations.
Atribut naked
hanya relevan dengan definisi fungsi dan tidak dapat ditentukan dalam prototipe fungsi. Misalnya, deklarasi ini menghasilkan kesalahan kompilator:
__declspec( naked ) int func(); // Error--naked attribute not permitted on function declarations
END Khusus Microsoft