ANSI C definiert wchar_t als einen eigenen, in stddef.h definierten integer-Typ.
Dieser Typ muss alle Elemente des sogenannten extended execution character set in allen vorhandenen Locales unterstützen, und dies zeigt schon die enge Abhängigkeit zum hosted environment.
Wenn dein Compilerbauer der Meinung ist, dass das hosted environment keine >8 Bit Zeichen in den Locales unterstützt, braucht er auch nichts hierfür anzubieten, d.h. MB_LEN_MAX == sizeof(char) == 1.
Für die standardgemäß implementierungsabhängige Konstante MB_LEN_MAX kann man sinnvolle Rückschlüsse auf die Größe von wchar_t ziehen.
Mit C95 (wchar.h) kamen dann diverse Funktionen zu wchar_t dazu (wprintf,...), alle aber wieder mit der engen Plattformabhängigkeit.
Deshalb sind auch die wchar_t Literale L'€', L"€" mit gewisser Vorsicht zu benutzen, die Laufzeitumgebung kann sich durchaus anders als deine Entw.umgebung verhalten und entprechende locale-mappings anders oder gar nicht implementieren. (diese Vorsicht gilt natürlich allgemein bei der Verwendung von Zeichen außerhalb von 7-Bit-ASCII in Zeichen- oder Stringliteralen).
http://ideone.com/4x1F0