Bagikan melalui


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.

Sintaks

__declspec(naked) declarator

Keterangan

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.

Contoh

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

Baca juga

__declspec
Kata kunci
Panggilan Fungsi Terbuka