Strictly speaking, the _T macro doesn't check. There's actually two _T macros, but only one is ever defined.
The definitions of the two _Ts, of the two _TEXTs and the two TEXT macros are:
In <tchar.h> (MS CRT extension)
Code:
#if defined(_UNICODE)
#define _T(x) L ## x
#define _TEXT(x) L ## x
#else
#define _T(x) x
#define _TEXT(x) x
#endif
In <windows.h> (Win32 API)
Code:
#if defined(UNICODE)
#define TEXT(x) L ## x
#else
#define TEXT(x) x
#endif
As you can see, the CRT and the Win32 versions are identical, except for the macro they test against.