我正在使用WPP(預處理器)和Visual Studio編譯器爲基於「Windows事件跟蹤」(ETW)的用戶模式應用程序添加跟蹤。在WPP跟蹤期間不支持多行MACRO
這個MSDN content解釋瞭如何轉換現有的宏以允許從它們內部進行跟蹤。這個例子有CHECK_HR,它獲得一個參數(HR),並且如果它不是0,則生成一個跟蹤。
現在,我發現如果參數是多行的,生成的預處理器函數不起作用,由於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人會得到一個錯誤:
wpp_File_cpp18: unknown function
沒有人有針對此問題的變通?我知道微軟在內部廣泛使用WPP,我不知道他們是如何處理這...
我已經確認DDK示例中不支持多行宏的行爲! – 2011-01-28 18:54:12