const_seg
指定的區段, const 變數儲存在.obj 檔中。
#pragma const_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )
備註
詞彙的意義區段 和 一節能互相對換本主題中。
調換 OBJ 檔案可以檢視與 dumpbin 應用程式。 .obj 檔中的預設區段 const 變數是.rdata。 有些 const 變數,例如純量,會自動內嵌至程式碼資料流。 內嵌程式碼不會出現在.rdata 中。
const_seg 不含任何參數重區段設為.rdata。
推入(可省略)
編譯器內部堆疊上放一筆資料錄。 A 推入 能 識別項 和 區段名稱。pop (可省略)
編譯器內部堆疊的頂端會移除資料錄。識別項 (可省略)
搭配使用時推入,將名稱指派給內部編譯器堆疊上的資料錄。 搭配使用時 pop,取出記錄之前內部堆疊 識別項會被移除。 如果識別項中找不到內部堆疊中,執行任何動作被取出。使用識別項 可讓取出,以單一的多筆記錄 pop 指令。
"區段名稱"(可省略)
區段名稱*.* 搭配使用時 pop,堆疊取出,並 區段名稱會變成使用中的區段名稱。「 區段類別 」 (可省略)
包含 C++ 之前至 2.0 版本的相容性。 它會被忽略。
範例
// 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;
}
註解
請參閱 /SECTION 為一系列建立區段時,應該不會使用您的名稱。
您也可以指定區段的初始化的資料 (data_seg),未初始化的資料 (bss_seg),和函式 (code_seg)。