共用方式為


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)。

請參閱

參考

Pragma 指示詞 」 和 「 __Pragma 關鍵字