WindowsXP + VisualStdio2008(+付属SDK) です。

#include <windows.h> 
#include <tchar.h> 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow){
ULARGE_INTEGER FreeBytesAvailableToCaller;
       FreeBytesAvailableToCaller.QuadPart = 1;
TCHAR tnob[256] = _T("a1");
return 0;
}

なぜかこれをコンパイルすると、
error C2275: 'TCHAR' : illegal use of this type as an expression
というエラーになります。tchar.hをインクルードしているのに、TCHARが使えないなんてありえないと思うのですが。

しかし、
#include <windows.h> 
#include <tchar.h> 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow){
ULARGE_INTEGER FreeBytesAvailableToCaller;
TCHAR tnob[256] = _T("a1");
return 0;
}
こうすると、なぜか上記のエラーはなくなります。
いったいなぜなんでしょうか?ULARGE_INTEGERのQuadPartはULONGLONG型であり、普通に1を代入できるはずなのですが。
そもそも、ここがおかしいのと、TCHARが使えないことに関係はないと思うのですが。
解決策わかるかたおられますか?