VC PlusPlus:マクロ定義を展開した後のプログラムを確認する方法 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(概要)
74行: 74行:
 
</syntaxhighlight2>
 
</syntaxhighlight2>
  
 と同じです。externがついているので、このファイル以外のどこかで定義されて実体化されているかもしれない外側から呼び出しできるint型のqInitResources_resource1を使うことを宣言しています。それを引数無しで初期化しています。int型の場合は0になります。外から呼び出せる形式でかつ、ここで初期化したいというプログラムになっています。何個もこのような変数を生成するときには、このマクロは便利ですが、これをマクロでやっているということを紐解くのはなかなか手間のかかることだということが、わかったと思います。
+
 と同じです。externがついているので、このファイル以外のどこかで定義されて実体化されているかもしれない外側から呼び出しできるint型のqInitResources_resource1を使うことを宣言しています。それを引数無しで初期化しています。int型の場合は0になります。外から呼び出せる形式でかつ、ここで初期化したいというプログラムになっています。何個もこのような変数を生成するときには、このマクロは便利ですが、これをマクロでやっているということを紐解くのはなかなか手間のかかることだということが、わかったと思います。do{...}while(...)にすることで直接グローバル変数とすることを避けています。do{...}while(false)とすると、{...}の中の処理が1回だけ処理される仕組みになります。
 +
 
 +
 
 +
 こういうことを確認する術があります。知らないよりは知っていた方が良いかもです。かなり深いプリプロッセッサになっている場合はコンパイルにもの凄く時間がかかりますが、ちょっとの我慢です。
 +
 
 +
 
 +
===''' マクロ定義展開方法 '''===
 +
 VisualStudioの特定のcppファイルのプロパティを変更することでプリプロセッサ処理後のプログラムを吐き出すことが出来ます。
 +
 
 +
 
 +
1.VisualStudioのソリューションエクスプローラからマクロ定義を展開したいcppファイルを選択して、右クリックして表示されるコンテクストメニューからプロパティを開きます。プロジェクトのプロパティと似たような感じで対象ファイルのプロパティを設定できます。
 +
 
 +
 
 +
2.表示されたダイアログで[行番号の前処理の抑制]の欄で値を[はい /PE]にします。
 +
 
 +
 
 +
3.VisualStudioのソリューションエクスプローラからマクロ定義を展開したいcppファイルを選択して、右クリックして表示されるコンテクストメニューからコンパイルを選択して、実行します。
 +
 
 +
 
 +
 これで出力ダイアログにマクロ展開されたプログラムが表示されます。展開された部分を探すのに疲れる場合もあるかもしれませんが、マクロ展開された部分は必ずあります。根気よく検索で探しましょう。探しきれない場合は一度、かなりユニークな文字列の引数をマクロに設定して試すとよいかもしれません。
 +
 
 +
 
  
 
[[VC PlusPlus]]に戻る
 
[[VC PlusPlus]]に戻る

2021年2月14日 (日) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス