分享方式:


const_seg pragma

指定 const 變數儲存在 物件 (.obj) 檔案中的區段(區段)。

語法

#pragma const_seg( [ “section-name” [ ,section-class” ] ] )
#pragma const_seg( { push | pop } [ , identifier ] [ ,section-name” [ ,section-class” ] ] )

參數

push
(選擇性)將記錄放在內部編譯程式堆疊上。 push可以有標識碼區段名稱

pop
(選擇性)從內部編譯程式堆疊頂端移除記錄。 pop可以有標識碼區段名稱。 您可以使用識別碼,只使用一個pop命令來快顯多個記錄。 區 段名稱 會在快顯之後變成使用中的 const 區段名稱。

識別碼
(選擇性)搭配 push使用 時,會將名稱指派給內部編譯程式堆疊上的記錄。 搭配 pop使用 時,指示詞會從內部堆疊取出記錄,直到 移除標識符 為止。 如果在 內部堆疊上找不到標識符,則不會彈出任何標識符

section-name
(選擇性)區段的名稱。 搭配 pop使用 時,會彈出堆棧,而 section-name 會變成使用中的 const 區段名稱。

section-class
(選擇性)忽略,但包含與 2.0 版之前版本Microsoft C++相容性。

備註

對象檔中的區段是載入記憶體作為單位的數據具名區塊。 const 區段是包含常數數據的區段。 在本文中,字詞 區段區段 的意義相同。

指示 const_segpragma 詞會指示編譯程式將所有常數數據項從轉譯單位放入名為 section-name 的 const 區段。 變數物件檔 const 中的預設區段為 .rdata。 某些 const 變數 (例如純量) 會自動內嵌於程式碼資料流中。 內嵌程式代碼不會出現在 中 .rdataconst_segpragma沒有 section-name 參數的指示詞會將後續const資料項目.rdata的區段名稱重設為 。

如果您在 中 const_seg定義需要動態初始化的物件,則結果為未定義的行為。

如需不應該用來建立區段的名稱清單,請參閱 /SECTION

您也可以指定初始化資料 (data_seg)、未初始化的數據 () 和函式 (bss_segcode_seg) 的區段。

您可以使用 DUMPBIN.EXE 應用程式來檢視物件檔。 每個支援的目標架構的 DUMPBIN 版本都會隨附於 Visual Studio 中。

範例

// pragma_directive_const_seg.cpp
// compile with: /EHsc
#include <iostream>

const int i = 7;               // inlined, not stored in .rdata
const char sz1[]= "test1";     // stored in .rdata

#pragma const_seg(".my_data1")
const char sz2[]= "test2";     // stored in .my_data1

#pragma const_seg(push, stack1, ".my_data2")
const char sz3[]= "test3";     // stored in .my_data2

#pragma const_seg(pop, stack1) // pop stack1 from stack
const char sz4[]= "test4";     // stored in .my_data1

int main() {
    using namespace std;
   // const data must be referenced to be put in .obj
   cout << sz1 << endl;
   cout << sz2 << endl;
   cout << sz3 << endl;
   cout << sz4 << endl;
}
test1
test2
test3
test4

另請參閱

Pragma 指示詞和 __pragma_Pragma 關鍵詞