<time.h> bug???
Ho-Jin Dan
naturalis@cais.kaist.ac.kr
Tue May 19 18:05:00 GMT 1998
ÃÂ i got error(warning) messages in compiling the following source.
from cygnus gnu-win32 b19.1
BASH.EXE-2.01$ gcc wingui.c -o wingui.exe -lgdi32 -luser32
wingui.c: In function `TimeCal':
wingui.c:67: warning: assignment makes pointer from integer without a
cast
wingui.c:69: warning: assignment makes pointer from integer without a
cast
BASH.EXE-2.01$
and from the lcc compiler, similar errors! occured.
<complete source is attached>...
char* TimeCal( void )
{
ÃÂ int i;
ÃÂ static struct tm *newtime;
ÃÂ static time_t t;
ÃÂ static char cTime[50];
ÃÂ static char *Total;
ÃÂ char *str = " ";
ÃÂ t = time( NULL );
ÃÂ newtime = localtime( &t );
ÃÂ strcpy( cTime, asctime(newtime) );
ÃÂ cTime[strlen(cTime) - 1] = '\0';
ÃÂ Total = strtok(cTime, str);ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ <-- #67 if (char*) is inserted, it
is compiled sucessfully.
ÃÂ for ( i = 0; i < 3; i++ )
ÃÂ Total = strtok(NULL, str);ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ <-- #69 if (char*) is inserted, it
is compiled sucessfully.
ÃÂ return Total;
}
but i succeed to compile it for a console program with djgpp &
cygnus-win32... and my friend report me that VC++5.0 handles it
correctly.
what makes this difference??? or is it a compiler error?
thank you in advance~
ÃÂ
ÃÂ
ÃÂ
ÃÂ
#include <windows.h>
#include <stdio.h>
#include <time.h>
ÃÂ
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain
(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszArg, int
nCmdShow)
{
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ HWND hWnd;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ MSG msg;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WNDCLASS WndClass;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ char szAppName[] ="This program is to create window";
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WndClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WndClass.lpfnWndProc = WndProc;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WndClass.cbClsExtra = 0;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WndClass.cbWndExtra = 0;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WndClass.hInstance = hInstance;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WndClass.hIcon = LoadIcon(NULL, IDI_HAND);
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WndClass.hCursor = LoadCursor(NULL, IDC_IBEAM);
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WndClass.hbrBackground = GetStockObject(WHITE_BRUSH);
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WndClass.lpszMenuName = NULL;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WndClass.lpszClassName = szAppName;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ if(!RegisterClass(&WndClass)) return FALSE;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ hWnd = CreateWindow(
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ szAppName,
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ szAppName,
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ WS_OVERLAPPEDWINDOW,
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ CW_USEDEFAULT,
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ CW_USEDEFAULT,
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ CW_USEDEFAULT,
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ CW_USEDEFAULT,
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ NULL,
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ NULL,
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ hInstance,
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ NULL
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ );
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ShowWindow(hWnd, nCmdShow);
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ UpdateWindow(hWnd);
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ while(GetMessage(&msg, NULL, 0, 0))
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ {
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ TranslateMessage(&msg);
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ DispatchMessage(&msg);
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ }
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ return msg.wParam;
}
char* TimeCal( void )
{
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ int i;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ static struct tm *newtime;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ static time_t t;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ static char cTime[50];
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ static char *Total;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ char *str = " ";
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ t = time( NULL );
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ newtime = localtime( &t );
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ strcpy( cTime, asctime(newtime) );
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ cTime[strlen(cTime) - 1] = '\0';
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ Total = (char*)strtok(cTime, str);
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ for ( i = 0; i < 3; i++ )
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ Total = (char*)strtok(NULL, str);
ÃÂ ÃÂ ÃÂ return Total;
}
LRESULT CALLBACK WndProc( HWND hWnd, UINT mesg, WPARAM wParam, LPARAM
lParam )
{
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ HDC hDC;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ static char szTimer[80];
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ switch( mesg )
ÃÂ ÃÂ ÃÂ {
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ case WM_CREATE :
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ SetTimer( hWnd, 100, 1000, NULL );
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ return FALSE;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ case WM_TIMER :
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ switch( LOWORD(wParam))
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ {
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ case 100 :
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ hDC = GetDC( hWnd );
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ TextOut( hDC, 100, 100, szTimer,
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ sprintf(szTimer,
"Current Time : %s", TimeCal())
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ );
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ReleaseDC( hWnd, hDC );
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ break;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ }
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ return FALSE;
ÃÂ
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ case WM_DESTROY :
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ PostQuitMessage(0);
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ return FALSE;
ÃÂ ÃÂ ÃÂ }
ÃÂ ÃÂ ÃÂ return DefWindowProc(hWnd, mesg, wParam, lParam);
}
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".
More information about the Cygwin
mailing list