The attitude of "it works for me" is what causes people to get into the realm of undefined behavior simply because it appears to work for them or their compiler allows it, etc. etc..

If _T() is defined by your compiler to do something else, then you can't use it that way. If you have that attitude, however, you'll use it anyway just because one compiler supports it and end up with code that possibly doesn't work. Is it likely? Perhaps not. It's also probably not likely that using void main() will blow up your computer. In the end, if a compiler supports void main(), why should you not use it? Portability perhaps?

If you are trying to write portable code, imo, I suppose you should probably provide your own macro for it. If you want, even just have your macro call _T() for compilers that you know support it.