Pragma yönergeleri ve anahtar sözcük __Pragma
Pragma yönergeleri veya işletim-makineye derleyicisi özelliklerini belirtin. __pragma Microsoft derleyici belirli anahtar sözcük yapmanıza olanak makro tanımları içinde kod pragma yönergeleri.
#pragma token-string
__pragma(token-string)
Notlar
c ve C++ her uygulama, ana makine veya işletim sistemi için benzersiz bazı özelliklerini destekler. Bazı programlar, örneğin, verilerin nereye koyduğunuzu bellek alanları üzerinden veya belirli parametreleri alma işlevlerini biçimini denetlemek için tam denetim dikkatli gerekir. #pragma Yönergeleri her derleyici c ve C++ dili ile genel uyumluluk koruyarak makine ve işletim sistemine özgü özellikleri sunmak bir yol sunar.
Formunda bilgi makine veya işletim sistemine özgü tanım ve her derleyici için genellikle farklı. Formunda bilgi koşullu deyimler Önişlemci yeni işlevsellik sağlamak ya da derleyici uygulama tanımlı bilgiler sağlamak için kullanılır.
token-string Derleyici belirli yönerge ve bağımsız veren karakterler varsa dizisidir. Sayı işareti (#); pragma içeren satırdaki ilk boşluk olmayan karakter olmalıdır Beyaz boşluk karakterleri sayı işareti ve sözcük "pragma" ayırabilirsiniz. Aşağıdaki #pragma, çevirici belirteçleri önişleme olarak ayrıştırmak herhangi bir metni yazın. Bağımsız değişken #pragma makro genişleme tabi olur.
Derleyici tarafından tanınmayan bir pragma bulursa, bir uyarı verir ve derleme devam eder.
Microsoft c ve C++ derleyiciler aşağıdaki formunda bilgi tanı:
loop1 |
||
1. Yalnızca C++ Derleyici tarafından desteklenir.
Formunda bilgi ve derleyici seçenekleri
Bazı formunda bilgi derleyici seçenekleri ile aynı işlevselliği sağlar. Kaynak kodunda bir pragma karşılaşıldığında, derleyici seçeneği ile belirtilen davranışı geçersiz kılar. Örneğin, belirttiğiniz /Zp8, bu kod ile belirli bölümler için derleyici ayarı geçersiz kılmak pack:
cl /Zp8 ...
<file> - packing is 8
// ...
#pragma pack(push, 1) - packing is now 1
// ...
#pragma pack(pop) - packing is 8
</file>
Anahtar sözcük __pragma()
Microsoft belirli
Derleyici de destekler __pragma aynı işlevselliğe sahip anahtar sözcük olarak #pragma yönergesi, ancak makro tanımında kullanılan satırla hizalı olabilir. #pragma Yönergesi derleyici numara işareti karakteri ('#') yönergesi olarak yorumladığından makro tanımında kullanılamaz stringizing işleci (#).
Aşağıdaki kod örneği göstermektedir nasıl __pragma anahtar sözcüğü, bir makroda kullanılabilir. Bu kodu acdual örnek olarak "Derleyici com Destek örnekleri" mfcdual.h başlığından alınmıştır:
#define CATCH_ALL_DUAL \
CATCH(COleException, e) \
{ \
_hr = e->m_sc; \
} \
AND_CATCH_ALL(e) \
{ \
__pragma(warning(push)) \
__pragma(warning(disable:6246)) /*disable _ctlState prefast warning*/ \
AFX_MANAGE_STATE(pThis->m_pModuleState); \
__pragma(warning(pop)) \
_hr = DualHandleException(_riidSource, e); \
} \
END_CATCH_ALL \
return _hr; \
Microsoft özel bitiş