Re: C2275: illegal use of this type as an expression? It's a DWORD?
kilik3000@gmail.com wrote:
void OnPaint(HWND hwnd)
{
PAINTSTRUCT ps;
BeginPaint(hwnd, &ps);
if (!IsRectEmpty(&ps.rcPaint))
{
// compute time to next update - we update once a second
SYSTEMTIME st;
GetSystemTime(&st);
DWORD dwTimeToNextTick = 1000 - st.wMilliseconds;
SetTimer(hwnd, 1, dwTimeToNextTick,
InvalidateAndKillTimer);
}
PaintContent(hwnd,&ps);
EndPaint(hwnd, &ps);
}
AFAICT, this code is valid C++ and C, although it is really bad because
completely lacks error checking. However, for this to compile as C, you
would need a C99 compliant compiler that allows declarations in the middle
of a block as opposed to only at the beginning.
Here is the compiler output:
error C2275: 'DWORD' : illegal use of this type as an expression see
declaration of 'DWORD'
error C2146: syntax error : missing ';' before identifier
'dwTimeToNextTick'
error C2065: 'dwTimeToNextTick' : undeclared identifier
I'm using the Win32 project template in VS 2005.
Looks like you you neither use a C++ nor a C99 compiler.
Uli