bss_seg
pragma
指定未初始化變數儲存在物件 (.obj) 檔案中的區段(區段)。
語法
#pragma bss_seg(
[ “section-name” [,
“section-class” ] ])
#pragma bss_seg(
{push
|pop
} [,
identifier ] [,
“section-name” [,
“section-class” ] ])
參數
push
(選擇性)將記錄放在內部編譯程式堆疊上。 push
可以有標識碼和區段名稱。
pop
(選擇性)從內部編譯程式堆疊頂端移除記錄。 pop
可以有標識碼和區段名稱。 您可以使用識別碼,只使用一個pop
命令來快顯多個記錄。 區 段名稱 會在快顯之後變成使用中的 BSS 區段名稱。
識別碼
(選擇性)搭配 push
使用 時,會將名稱指派給內部編譯程式堆疊上的記錄。 搭配 pop
使用 時,指示詞會從內部堆疊取出記錄,直到 移除標識符 為止。 如果在 內部堆疊上找不到標識符,則不會彈出任何標識符 。
“section-name”
(選擇性)區段的名稱。 搭配 pop
使用 時,會彈出堆疊,而 section-name 會變成使用中的 BSS 區段名稱。
“section-class”
(選擇性)忽略,但包含與 2.0 版之前版本Microsoft C++相容性。
備註
對象檔中的區段是載入記憶體作為單位的數據具名區塊。 BSS 區段是包含未初始化數據的區段。 在本文中,字詞 區段 和 區段 的意義相同。
指示 bss_seg
pragma 詞會指示編譯程式將所有未初始化的數據項從轉譯單位放入名為 section-name 的 BSS 區段。 在某些情況下,使用 bss_seg
可加速載入時間,方法是將未初始化的數據分組到一個區段。 根據預設,物件檔中用於未初始化資料的 BSS 區段會命名為 .bss
。 bss_seg
pragma沒有 section-name 參數的指示詞會將後續未初始化資料項目.bss
的 BSS 區段名稱重設為 。
使用 bss_seg
pragma 配置的數據不會保留其位置的任何資訊。
如需不應該用來建立區段的名稱清單,請參閱 /SECTION
。
您也可以指定初始化資料 ()、函式 (data_seg
code_seg
) 和 const 變數 () 的const_seg
區段。
您可以使用 DUMPBIN.EXE 應用程式來檢視物件檔。 每個支援的目標架構的 DUMPBIN 版本都會隨附於 Visual Studio 中。
範例
// 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() {
}