Sdílet prostřednictvím


Pragma směrnic a __Pragma klíčové slovo

Pragma směrnic určit počítače nebo provozní specifické funkce kompilátoru.__pragma Klíčové slovo, které je specifické pro kompilátor Microsoft, můžete kód pragma směrnic v rámci definice maker.

#pragma token-string
__pragma(token-string)

Poznámky

Každý provádění c a C++ podporuje některé funkce, které jsou jedinečné pro operační systém nebo hostitelský počítač.Některé programy, například musí vykonávat přesnou kontrolu nad oblastí paměti, kde je umístit data nebo řídit způsob, jakým některé funkce zobrazí parametry.#pragma Směrnic nabídnout způsob, jakým každý kompilátoru nabízí funkce pro konkrétní počítače a operačního systému při současném zachování celkové kompatibility s jazyky c a C++.

Pragmas jsou počítače nebo operačního systému specifické podle definice a jsou obvykle různé pro každou kompilátoru.Pragmas lze použít v podmíněné příkazy preprocesoru nových funkcí nebo poskytnout informace definované implementací kompilátoru.

token-string Je posloupnost znaků poskytuje kompilátor specifické instrukce a argumenty.Znak čísla (#) musí být prvním znakem bílého místa na řádek, který obsahuje záhlaví pragma; prázdné znaky lze oddělit znakem a slovo "pragma".Po #pragma, napsat text, který překladač lze analyzovat jako předběžné zpracování tokeny.Argument #pragma má rozšíření makra.

Pokud najde kompilátor pragma, který nebyl rozpoznán, upozornění a pokračuje kompilace.

Microsoft c a C++ kompilátory rozpoznat následující pragmas:

alloc_text

auto_inline

bss_seg

check_stack

code_seg

komentář

součást

conform1

const_seg

data_seg

nepoužívá

detect_mismatch

fenv_access

float_control

fp_contract

funkce

hdrstop

include_alias

init_seg1

inline_depth

inline_recursion

vnitřní

loop1

make_public

spravované

zpráva

omp

jednou

optimalizovat

Pack

pointers_to_members1

pop_macro

push_macro

region, endregion

runtime_checks

oddíl

setlocale

strict_gs_check

nespravované

vtordisp1

upozornění

1.Podporovány pouze kompilátor C++.

Možnosti kompilátoru a Pragmas

Některé pragmas poskytnout stejné funkce jako volby kompilátoru.Pragma vyskytne ve zdrojovém kódu, potlačí chování určené parametrem kompilátoru.Pokud jste zadali například /Zp8, můžete přepsat toto nastavení kompilátoru pro určité sekce kódu s pack:

cl /Zp8 ...

<file> - packing is 8
// ...
#pragma pack(push, 1) - packing is now 1
// ...
#pragma pack(pop) - packing is 8
</file>

__Pragma() klíčové slovo

Konkrétní společnosti Microsoft

Kompilátor podporuje také __pragma klíčové slovo má stejné funkce jako #pragma směrnice, ale může být použité vložená definice makra.#pragma Definice makra nelze použít směrnice, protože kompilátor interpretoval znak dvojitý kříž (#) směrnice se stringizing operátor (#).

Následující příklad kódu ukazuje, jak se __pragma lze použít klíčové slovo v makru.Tento kód je převzat z hlavičky mfcdual.h v ACDUAL vzorku v "Podpora kompilátoru COM vzorků":

#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; \

Určité koncové Microsoft

Viz také

Referenční dokumentace

C Pragmas

Klíčových slov jazyka C++

Další zdroje

C/C++-Reference preprocesoru