const_seg

定数 の変数は .obj ファイルに格納されているセグメントを指定します。

#pragma const_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )

解説

用語の意味は 分割し それらについては このトピックで交換できます。

OBJ ファイルは dumpbin のアプリケーションで表示できます。 定数 の変数の .obj ファイルの既定のセグメントは.rdata です。 定数 の変数はスカラーのようなコード ストリームに自動的にインライン。インライン コードは.rdata に表示されません。

パラメーター なしの const_seg には.rdataセグメントをリセットします。

  • プッシュ (省略可能)
    コンパイラの内部スタックにレコードを配置します。 プッシュ識別子線分名前 を付けること できます。

  • pop (省略可能)
    コンパイラの内部スタックの最上位からレコードを削除します。

  • 識別子 (省略可能)
    プロジェクトの名前コンパイラの内部スタックのレコードに プッシュ に使用された場合。pop を使用するとpop は内部スタックから 識別子が 削除されるまで記録します ; 識別子が 内部スタックにいない場合は何も操作では鳴りません。

    pop の一つのコマンドとポップする 識別子に より複数のレコードを使用します。

  • セグメント 「 Name 」 (省略可能)
    セグメントの名前 *。*pop を使用するとスタックがポップされ セグメント名は アクティブなセグメント名になります。

  • 「 segment 」クラス (省略可能)
    バージョン 2.0 までは C++ の互換性のためにインクルードされます。これは無視されます。

使用例

// 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 のキーワード