section
pragma
Tworzy sekcję w pliku OBJ.
Składnia
#pragma section( "
nazwa-sekcji"
[,
atrybuty ])
Uwagi
Terminy segment i sekcja mają takie samo znaczenie w tym artykule.
Po zdefiniowaniu sekcji pozostaje ona prawidłowa dla pozostałej części kompilacji. Należy jednak użyć elementu __declspec(allocate)
lub nic nie zostało umieszczone w sekcji .
nazwa-sekcji jest wymaganym parametrem, który staje się nazwą sekcji. Nazwa nie może powodować konfliktu z żadnymi standardowymi nazwami sekcji. Zobacz /SECTION
listę nazw, których nie należy używać podczas tworzenia sekcji.
atrybuty to opcjonalny parametr składający się z co najmniej jednego atrybutu rozdzielanego przecinkami do przypisania do sekcji. Możliwe atrybuty to:
Atrybut | opis |
---|---|
read |
Umożliwia operacje odczytu na danych. |
write |
Umożliwia operacje zapisu na danych. |
execute |
Umożliwia wykonywanie kodu. |
shared |
Udostępnia sekcję wśród wszystkich procesów ładujących obraz. |
nopage |
Oznacza sekcję jako niestronicowaną. Przydatne w przypadku sterowników urządzeń Win32. |
nocache |
Oznacza sekcję jako niemożliwą do buforowania. Przydatne w przypadku sterowników urządzeń Win32. |
discard |
Oznacza sekcję jako odrzuconą. Przydatne w przypadku sterowników urządzeń Win32. |
remove |
Oznacza sekcję jako nie rezydenta pamięci. Tylko w przypadku sterowników urządzeń wirtualnych (VxD). |
Jeśli nie określisz żadnych atrybutów, sekcja zawiera read
atrybuty i write
.
Przykład
W tym przykładzie pierwsza sekcja pragma identyfikuje sekcję i jej atrybuty. Liczba całkowita j
nie jest umieszczana w mysec
pliku, ponieważ nie została zadeklarowana przy użyciu metody __declspec(allocate)
. Zamiast tego przejdź j
do sekcji danych. Liczba całkowita i
przechodzi do mysec
z powodu atrybutu __declspec(allocate)
klasy magazynu.
// pragma_section.cpp
#pragma section("mysec",read,write)
int j = 0;
__declspec(allocate("mysec"))
int i = 0;
int main(){}