Bagikan melalui


intrinsic pragma

Menentukan bahwa panggilan ke fungsi yang ditentukan dalam pragmadaftar argumen adalah intrinsik.

Sintaks

#pragma intrinsic( function_1 [, function_2 ... ])

Keterangan

intrinsicpragma memberi tahu pengkompilasi bahwa fungsi memiliki perilaku yang diketahui. Pengkompilasi dapat memanggil fungsi dan tidak mengganti panggilan fungsi dengan instruksi sebaris, jika akan menghasilkan performa yang lebih baik.

Fungsi pustaka dengan formulir intrinsik tercantum di bawah ini. intrinsicpragma Setelah terlihat, itu berlaku pada definisi fungsi pertama yang berisi fungsi intrinsik tertentu. Efek berlanjut ke akhir file sumber atau ke tampilan yang functionpragma menentukan fungsi intrinsik yang sama. hanya intrinsicpragma dapat digunakan di luar definisi fungsi, di tingkat global.

Fungsi berikut memiliki bentuk intrinsik, dan bentuk intrinsik digunakan saat Anda menentukan /Oi:

Program yang menggunakan fungsi intrinsik lebih cepat karena tidak memiliki overhead panggilan fungsi. Namun, kode mungkin lebih besar karena kode tambahan yang dihasilkan.

Contoh khusus x86

Intrinsik _disable dan _enable menghasilkan instruksi mode kernel untuk menonaktifkan atau mengaktifkan interupsi, dan dapat berguna dalam driver mode kernel.

Kompilasi kode berikut dari baris perintah dengan cl -c -FAs sample.c dan lihat sample.asm untuk melihat bahwa kode tersebut berubah menjadi CLI dan STI instruksi x86:

// pragma_directive_intrinsic.cpp
// processor: x86
#include <dos.h>   // definitions for _disable, _enable
#pragma intrinsic(_disable)
#pragma intrinsic(_enable)
void f1(void) {
   _disable();
   // do some work here that should not be interrupted
   _enable();
}
int main() {
}

Fungsi titik mengambang intrinsik

Fungsi floating-point ini tidak memiliki bentuk intrinsik yang sebenarnya. Sebaliknya, mereka memiliki versi yang meneruskan argumen langsung ke chip floating-point, daripada mendorongnya pada tumpukan:

Fungsi floating-point ini memiliki bentuk intrinsik yang sebenarnya ketika Anda menentukan /Oi dan (atau opsi apa pun yang mencakup /Oi: /Ox, /O1, dan /O2/fp:fast ):

Anda dapat menggunakan /fp:strict atau /Za untuk mengambil alih pembuatan opsi floating-point intrinsik sejati. Dalam hal ini, fungsi dihasilkan sebagai rutinitas pustaka yang meneruskan argumen langsung ke chip floating-point alih-alih mendorongnya ke tumpukan program.

Lihat #pragma function untuk informasi dan contoh tentang cara mengaktifkan dan menonaktifkan intrinsik untuk blok teks sumber.

Lihat juga

Arahan Pragma dan __pragma _Pragma kata kunci
Intrinsik pengkompilasi