I've googled C syntax for near a month now. It's very, very cryptic. Remember, I've programmed assembly for 30+ years as well as a half dozen other languages. Nothing remotely compares to C syntax in obtuseness. It's simply hit or miss. I've written assemblers for microprocessors and even commercial software.
I was simply using what others have used (this specific Debug macro). I am now using the D one above. I had the misfortune of calling D, DBG, and that caused some severe compiler error in objbase.h whereby it wouldn't compile the program at all.
I did test this and even looked at the generated code to make sure it was doing what I expected it to. However, for the macro expansion, there is one extra PUSH statement over the native _tprintf that I haven't figured out why it's there (yet).
Also, where did the _T part go in your above macro result?