WPP(プリプロセッサ)とビジュアルスタジオコンパイラを使用した「Windowsのイベントトレース」(ETW)に基づくユーザーモードアプリケーションにトレースを追加しています。WPPトレース中のマルチラインMACROのサポートなし
このMSDN contentは、既存のマクロを変換して、その中からトレースできるようにする方法を説明しています。 1つの引数(HR)を取得し、それが0でない場合にトレースを生成するCHECK_HRの例があります。
ここで、引数が複数行の場合、生成されたプリプロセッサ関数は機能しませんWPPの仕組みに起因しています。しかし、私はそのような問題への参照を見つけることができませんでした!
CHECK_HR(DoSomething(a,b,c)); // works
CHECK_HR(DoSomething(a,
b, c)); // don't work
問題は、マクロがFile.cpp WPPの17行でプリプロセッサにより検出された場合、それはwpp_File_cpp17のようなものと呼ばれる関数を生成し、マクロから呼び出すLINEを使用していることです。上記のようにしかし、複数行のマクロのために__ LINE__ 18になり、1はエラーが発生します。
wpp_File_cpp18: unknown function
は、誰もがこの問題の回避策を持っていますか?私はMSFTがWPPを広く内部的に使用していることを知っています。私は彼らがどのようにこれを処理するのだろう...
DDKサンプルでも複数行マクロをサポートしていない動作を確認しました。 –