intrinsic pragma

'nin bağımsız değişken listesinde belirtilen işlevlere yapılan pragmaçağrıların içsel olduğunu belirtir.

Sözdizimi

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

Açıklamalar

derleyiciye intrinsicpragma bir işlevin bilinen davranışa sahip olduğunu bildirir. Derleyici, işlevi çağırabilir ve daha iyi performans gösterecekse işlev çağrısını satır içi yönergelerle değiştirmeyebilir.

İç biçimlere sahip kitaplık işlevleri aşağıda listelenmiştir. intrinsicpragma bir görüldüğünde, belirtilen bir iç işlevi içeren ilk işlev tanımında etkili olur. Etki, kaynak dosyanın sonuna veya aynı iç işlevi belirten bir functionpragma görünümüne devam eder. intrinsicpragma yalnızca genel düzeyde bir işlev tanımının dışında kullanılabilir.

Aşağıdaki işlevler iç formlara sahiptir ve belirttiğinizde /Oiiç formlar kullanılır:

İç işlevleri kullanan programlar, işlev çağrıları ek yüküne sahip olmadıklarından daha hızlıdır. Ancak, oluşturulan ek kod nedeniyle bunlar daha büyük olabilir.

x86'ya özgü örnek

_disable ve _enable iç bilgileri, kesmeleri devre dışı bırakmak veya etkinleştirmek için çekirdek modu yönergeleri oluşturur ve çekirdek modu sürücülerinde yararlı olabilir.

Komut satırından aşağıdaki kodu ile cl -c -FAs sample.c derleyin ve bunların CLI ve STI x86 yönergelerine dönüştüklerini görmek için bakın sample.asm :

// 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() {
}

İç kayan nokta işlevleri

Bu kayan nokta işlevlerinin gerçek iç biçimleri yoktur. Bunun yerine, bağımsız değişkenleri yığına göndermek yerine doğrudan kayan nokta yongasına geçiren sürümleri vardır:

Ve belirttiğinizde /Oi/fp:fast bu kayan nokta işlevleri gerçek iç formlara sahiptir (veya şunu içeren herhangi bir seçenek vardır /Oi: /Ox, /O1ve /O2):

gerçek iç kayan nokta seçeneklerinin oluşturulmasını geçersiz kılmak için veya /Za kullanabilirsiniz/fp:strict. Bu durumda işlevler, bağımsız değişkenleri program yığınına döndürmek yerine doğrudan kayan nokta yongasına geçiren kitaplık yordamları olarak oluşturulur.

Kaynak metin bloğu için iç bilgileri etkinleştirme ve devre dışı bırakma hakkında bilgi ve örnek için bkz #pragma function .

Ayrıca bkz.

Pragma yönergeleri ve __pragma ve _Pragma anahtar sözcükleri
Derleyici iç bilgileri