bss_seg
pragma
Określa sekcję (segment), w której niezainicjowane zmienne są przechowywane w pliku obiektu (.obj).
Składnia
#pragma bss_seg(
[ "section-name" [,
"section-class" ] ])
#pragma bss_seg(
{push
pop
| } [,
identyfikator ] [,
"nazwa-sekcji" [,
"section-class" ])
Parametry
push
(Opcjonalnie) Umieszcza rekord w wewnętrznym stosie kompilatora. Element push
może mieć identyfikator i nazwę sekcji.
pop
(Opcjonalnie) Usuwa rekord z góry wewnętrznego stosu kompilatora. Element pop
może mieć identyfikator i nazwę sekcji. Wiele rekordów można wyświetlać przy użyciu tylko jednego pop
polecenia przy użyciu identyfikatora. Nazwa-sekcji staje się aktywną nazwą sekcji BSS po wyskakującym okienku.
identifier
(Opcjonalnie) W przypadku użycia z push
programem przypisuje nazwę do rekordu w wewnętrznym stosie kompilatora. W przypadku użycia z funkcją pop
dyrektywa wyskakuje rekordy poza stos wewnętrzny do momentu usunięcia identyfikatora . Jeśli identyfikator nie zostanie znaleziony na stosie wewnętrznym, nic nie zostanie pominięte.
"nazwa-sekcji"
(Opcjonalnie) Nazwa sekcji. W przypadku użycia z elementem pop
stos jest zwinięty, a nazwa sekcji staje się aktywną nazwą sekcji BSS.
"section-class"
(Opcjonalnie) Zignorowane, ale uwzględnione w celu zachowania zgodności z wersjami języka Microsoft C++ starszymi niż wersja 2.0.
Uwagi
Sekcja w pliku obiektu jest nazwanym blokiem danych załadowanych do pamięci jako jednostki. Sekcja BSS to sekcja zawierająca niezainicjowane dane. W tym artykule terminy segmentu i sekcji mają takie samo znaczenie.
Dyrektywa bss_seg
pragma nakazuje kompilatorowi umieszczenie wszystkich niezainicjowanych elementów danych z jednostki tłumaczenia do sekcji BSS o nazwie section-name. W niektórych przypadkach użycie polecenia bss_seg
może przyspieszyć czas ładowania, grupując niezainicjowane dane w jedną sekcję. Domyślnie sekcja BSS używana dla niezainicjowanych danych w pliku obiektu nosi nazwę .bss
. bss_seg
pragma Dyrektywa bez parametru nazwy sekcji resetuje nazwę sekcji BSS dla kolejnych niezainicjowanych elementów danych na .bss
.
Dane przydzielone przy użyciu obiektu bss_seg
pragma nie zachowują żadnych informacji o jego lokalizacji.
Aby uzyskać listę nazw, których nie należy używać do tworzenia sekcji, zobacz /SECTION
.
Można również określić sekcje dla zainicjowanych danych (data_seg
), funkcji (code_seg
) i zmiennych const (const_seg
).
Aby wyświetlić pliki obiektów, możesz użyć aplikacji DUMPBIN.EXE . Wersje narzędzia DUMPBIN dla każdej obsługiwanej architektury docelowej są dołączone do programu Visual Studio.
Przykład
// pragma_directive_bss_seg.cpp
int i; // stored in .bss
#pragma bss_seg(".my_data1")
int j; // stored in .my_data1
#pragma bss_seg(push, stack1, ".my_data2")
int l; // stored in .my_data2
#pragma bss_seg(pop, stack1) // pop stack1 from stack
int m; // stored in .my_data1
int main() {
}