C#を勉強し始め、アンマネージド(ネイティブ・コード)のコードを書く必要があり
C++での記述を調べています。
マネージ・コードとネイティブ・コードの混在ということは
「#pragma managed」「#pragma unmanaged」で使い分ける事は理解できたのですが
MSDNにある
#pragma managed([push,] on | off)
#pragma managed(pop)
の意味がよくわかりませんでした。
http://msdn.microsoft.com/ja-jp/library/0adb9zxe …
こちらに関して説明が乗っているHP、もしくはその説明を教えていただけないでしょうか。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
#pragma managed(push, on)
の意味は「今のマネージのオンオフの状態を取っておいて、マネージをオンにする」と言う意味。
#pragma managed(push, off)
の意味は「今のマネージのオンオフの状態を取っておいて、マネージをオフにする」と言う意味。
#pragma managed(pop)
の意味は「pushで取っておいたマネージの状態に戻す」と言う意味。
どこかのコードの途中で「マネージを一時的にオンしたい」とします。
一時的にオンにした後は「元の状態に戻す必要」があります。
そして、その場所の「元の状態がオンかオフか判らない」としたら、どうしたら良いでしょう?
//サンプルコード1
//この位置はオンかオフか判らない
//
//マネージをオンにする
#pragma managed
//
~~~
~~~
//マネージを元に戻す
//#pragma managed/unmanagedのどっちか判らない!元に戻せない。どうしよう?
//
これでは、元に戻せませんね。
//サンプルコード2
//この位置はオンかオフか判らない
//
//今の状態を保存して、マネージをオンにする
#pragma managed(push,on)
//
~~~
~~~
//マネージを元に戻す
#pragma managed(pop)
//
どうです?元の状態がどっちか判らなくても「元の状態」に戻せたでしょう?
managedのpushとpopは、通常「インクルードファイルの中で、マネージをオンしたりオフしたりする必要がある時」に使います。
例えば、test.hppのインクルードファイル内で
//マネージをオンにする
#pragma managed(push,on)
//
~~~
~~~
//マネージを元に戻す
#pragma managed(pop)
と書きます。
test.hppは「どこで使われるか判らない」ですから、マネージがオンの場所で呼び出されたり、マネージがオフの場所で呼び出されたりします。
インクルードを呼び出す側も
//マネージをオンする
#pragma managed
//
//このtest.hppは、中でマネージを一時的にオンにしても元に戻してくれる
<#include test.hpp>
//
//ここは「マネージがオン」のつもりで書く
//
#pragma unmanaged
//
//このtest.hppは、中でマネージを一時的にオンにしても元に戻してくれる
<#include test.hpp>
//
//ここは「マネージがオフ」のつもりで書く
//
みたいになっています。
もし、test.hppの中で「マネージをオンしたまま、元に戻さなかった」としたら、困った事になります。
//
#pragma unmanaged
//
//このtest.hppは、中でマネージをオンにしたまま戻さないという、極悪非道なファイル
<#include test.hpp>
//
//ここのコードを「マネージがオフ」のつもりで書いても、マネージはオンになっている
//
どうです?「元に戻す」ってのが、如何に重要な事か、理解できましたか?
理解できました!
大変丁寧に教えていただきありがとうございます!!
今の状態を意識しつつ、pushとpopをうまく使ってみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 作詞・作曲 コード進行に使うCとかG/Bってなんですか? 作曲勉強を始めたばかりです。 CとかG/Bの意味がわか 4 2022/04/03 02:00
- 作詞・作曲 或る曲の楽譜のコード進行の中に"F onA"なるものがありました。これはどんな和音ですか? 7 2023/05/22 00:34
- CAD・DTP DraftSight 2022 PC乗り換え方法 とアカウント?の確認方法 1 2022/11/26 23:03
- C言語・C++・C# [至急]Project Euler:#13Large sum コード、入力、出力、解説 1 2022/09/24 02:30
- 楽器・演奏 ギターに不向きでしょうか? ギターを始めようと思いコードから調べてみたのですが、全く訳がわかりません 14 2023/06/25 22:08
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- C言語・C++・C# [至急] Project Euler:#16 Power digit sumコード、入力、出力、解説 3 2022/09/24 02:35
- 英語 True sinus infections are less common but may have 1 2023/04/10 13:36
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- 作詞・作曲 コード進行解説お願いします。 https://youtu.be/b9Jh97vbCuU?si=ULC 2 2023/08/24 20:25
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JANコードとPOSコードは同じ?
-
フィルターかけた後、重複を除...
-
1日に1人がこなせるプログラム...
-
VB6のComboBox関連の書き方をVB...
-
access2003 クエリSQL文に...
-
ACCESSユニオンクエリでORDER B...
-
1、Rstudioで回帰直線を求める...
-
Exel VBA 別ブックから該当デ...
-
UWSCでMOUSEORG関数が上手く処...
-
access2021 VBA メソッドまたは...
-
JavaScriptの定数名が取り消し...
-
COBOLの文法
-
sinカーブの表示のさせ方
-
ExcelVBAで「Shift_JIS(MS932)...
-
ACCESS VBA ヘッダなしCSVの入...
-
ペンダントライトのコードの色...
-
CheckBoxのコントロール配列に...
-
コンパイルエラー 変数が定義...
-
Objective-Cの繰返しアニメーシ...
-
変数名「cur」について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
JANコードとPOSコードは同じ?
-
1日に1人がこなせるプログラム...
-
JavaScriptの定数名が取り消し...
-
access2003 クエリSQL文に...
-
Nullの使い方が不正です。
-
sinカーブの表示のさせ方
-
access2021 VBA メソッドまたは...
-
IF文、条件分岐の整理方法
-
COBOLの文法
-
変数名「cur」について
-
Exel VBA 別ブックから該当デ...
-
【VB6】実行ファイルとした後、...
-
Excel VBA素人です。VBAで図形...
-
ペンダントライトのコードの色...
-
VBAでファイルオープン後にコー...
-
PreviewKeyDownイベントが2回...
-
ACCESSユニオンクエリでORDER B...
-
VB6のComboBox関連の書き方をVB...
-
Access DCountでの連番について
おすすめ情報