Changelog: switch winefile to UNICODE mode Why did I declare a new macro $(PREINCL) and insert it into Make.rule.in ? To allow inserting the include directory <include/msvcrt> before <include>. Another way would be to change the following line in Make.rule.in and move $(EXTRAINCL) before -I$(TOPSRCDIR)/include: INCLUDES = -I$(SRCDIR) -I. $(EXTRAINCL) -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include Why did I remove the following from include/tchar.h? #if defined(_UNICODE) || defined(_MBCS) #error You must use msvcrt when building in Unicode/MBCS mode #endif Because it's just crazy - a few lines later _UNICODE and _MBCS are used to build the A/W mapping macros: /***************************************************************************** * tchar mappings */ #ifndef _UNICODE # ifndef _MBCS # include <string.h> # define WINE_tchar_routine(std,mbcs,unicode) std # else # include <mbstring.h> # define WINE_tchar_routine(std,mbcs,unicode) mbcs # endif #else /* _UNICODE */ # include <wchar.h> # define WINE_tchar_routine(std,mbcs,unicode) unicode #endif If _UNICODE and _MBCS would not be allowed to be used in <tchar.h> at all, what would be the sense of the whole file?