MSVCがプリプロセッサマクロに使用している価値を把握する方法
-
20-09-2019 - |
質問
MSVC6でA /Dコンパイラオプションを使用して文字列を定義しようとしていますが、その周りに二重引用符を使用することには奇妙なことがあります。この問題をデバッグするには、プリプロセッサが実際にマクロが拡張されているコードに置き換えられている価値を実際に確認できることが非常に役立ちます。これを行う方法はありますか? 「アセンブリとソース」を使用してリストファイルを作成しようとしましたが、ソースには元のマクロ名が含まれており、ASMはそのラインでは理解できない意味があります。コンパイル時間にマクロ値を取得する方法はありますか?
それに失敗する(またはおそらくより便利な)、 /dオプションで文字列を指定するにはどうすればよいですか?私はそれを文字列の文字通りとして使用しているので、それはその周りに二重の引用で私のソースに置き換える必要があります。
解決
次のオプションのいずれかをcl.exeに試してください。
/E preprocess to stdout
/P preprocess to file
Visual Studio内で構築する場合は、プロジェクトプロパティダイアログのいずれかでカスタムコマンドラインオプションを指定できます。
他のヒント
MSVCには、すべてのマクロが拡張されたすべてのマクロ、コメントなどを含む前処理されたソースファイルを表示できるコンパイラフラグがあります。コンパイルされる実際のコードの観点から翻訳ユニット全体。前処理された出力は、マクロの拡張に関して探している洞察を提供するはずです。より詳しい情報 ここ.
コンパイラに渡すオプションがあります(/P
)そして、それはプリプロセッサ出力をに書き込みます my_cpp_file.i
あなたがそれを見ることができる場所。
所属していません StackOverflow