section
pragma
Vytvoří oddíl v souboru OBJ.
Syntaxe
#pragma section( "
section-name"
[,
atributy ])
Poznámky
Segment termínů a oddíl mají stejný význam v tomto článku.
Jakmile je oddíl definovaný, zůstane platný pro zbytek kompilace. Je však nutné použít __declspec(allocate)
, nebo se v oddílu nic nesloží.
section-name je povinný parametr, který se stane názvem oddílu. Název nesmí být v konfliktu s žádnými standardními názvy oddílů. Podívejte /SECTION
se na seznam názvů, které byste neměli používat při vytváření oddílu.
atributy jsou volitelný parametr, který se skládá z jednoho nebo více atributů oddělených čárkami, které se mají přiřadit k oddílu. Možné atributy jsou:
Atribut | Popis |
---|---|
read |
Umožňuje operace čtení dat. |
write |
Umožňuje operace zápisu dat. |
execute |
Umožňuje spuštění kódu. |
shared |
Sdílí oddíl mezi všemi procesy, které načítají image. |
nopage |
Označí oddíl jako nestránitelný. Užitečné pro ovladače zařízení Win32. |
nocache |
Označí oddíl jako neupamětelný. Užitečné pro ovladače zařízení Win32. |
discard |
Označí oddíl jako zahozený. Užitečné pro ovladače zařízení Win32. |
remove |
Označí oddíl jako oddíl, který není rezidentem paměti. Pouze pro ovladače virtuálních zařízení (VxD). |
Pokud nezadáte žádné atributy, oddíl má read
a write
atributy.
Příklad
V tomto příkladu první část pragma identifikuje oddíl a jeho atributy. Celé číslo j
není vloženo mysec
, protože nebylo deklarováno pomocí __declspec(allocate)
. j
Místo toho přejde do datového oddílu. Celé číslo i
se dostane mysec
z důvodu atributu __declspec(allocate)
třídy úložiště.
// pragma_section.cpp
#pragma section("mysec",read,write)
int j = 0;
__declspec(allocate("mysec"))
int i = 0;
int main(){}