• Sam Lantinga's avatar
    Date: Tue, 05 Jul 2005 21:43:26 +1000 · f437ac41
    Sam Lantinga authored
    From: Sean Childs
    Subject: [SDL] Compiling SDL 1.2.8 with the free Borland compiler
    
    When compiling SDL 1.2.8 with the free Borland compiler, I received this
    error (there is a similar error that occurs in
    src\video\windx5\sdl_dx5events.c):
    Error E2342 ..\..\src\video\windib\sdl_dibevents.c 189: Type mismatch in
    parameter 'lpPrevWndFunc' (wanted 'int (__stdcall *)()', got 'long
    (__stdcall *)(void *,unsigned int,unsigned int,long)') in function
    DIB_HandleMessage
    
    
    I checked the MSDN library at:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/
    windowsuserinterface/windowing/windowprocedures/windowprocedurereference/wind
    owprocedurefunctions/callwindowproc.asp
    
    and it had this to say:
    If STRICT is not defined, the lpPrevWndFunc parameter has the data type
    FARPROC. The FARPROC type is declared as follows:
    
    int (FAR WINAPI * FARPROC) ()
    
    In C, the FARPROC declaration indicates a callback function that has an
    unspecified parameter list. In C++, however, the empty parameter list in
    the declaration indicates that a function has no parameters. This subtle
    distinction can break careless code. Following is one way to handle this
    situation:
    
    #ifdef STRICT
       WNDPROC MyWindowProcedure
    #else
       FARPROC MyWindowProcedure
    #endif
    ...
       lResult = CallWindowProc(MyWindowProcedure, ...)
    
    --HG--
    extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401306
    f437ac41
SDL_dibevents.c 12 KB