定数 の変数は .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 するセクションを指定できます。