Problemas de programación del kernel de Windows
//
// Tipos y macros ANSI/UNICODE neutros
//
#ifdef UNICODE // r_winnt
# ifndef _TCHAR_DEFINED
typedef WCHAR TCHAR, *PTCHAR;
typedef WCHAR TBYTE, *PTBYTE
#define _TCHAR_DEFINED
#endif /* !
#define _TCHAR_DEFINED */
typedef LPWSTR LPTCH, PTCH;
typedef LPWSTR PTSTR, LPTSTR;
typedef LPCWSTR LPCTSTR;
typedef LPWSTR LP;
#define __TEXT(quote) L##quote // r_winnt
#else /* UNICODE */ // r_winnt
#ifndef _TCHAR_DEFINED
typedef char TCHAR, *PTCHAR;
typedef unsigned char TBYTE, *PTBYTE
#define _TCHAR_DEFINED
#endif /* !
#define _TCHAR_DEFINED */
typedef LPSTR LPTCH, PTCH;
typedef LPSTR PTSTR, LPTSTR;
typedef LPCSTR LPCTSTR;
#define __TEXT( cita) cita // r_winnt
#endif /* UNICODE */ // r_winnt
#define TEXT(cita) __TEXT(cita) // r_winnt
Uno para UNICODE y otro para no UNICODE. Esto no duplica la definición. Es posible que otra persona haya modificado su definición.