1/* 2 SDL - Simple DirectMedia Layer 3 Copyright (C) 1997-2012 Sam Lantinga 4 5 This library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 This library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with this library; if not, write to the Free Software 17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 19 Sam Lantinga 20 slouken@libsdl.org 21*/ 22 23#ifndef _SDL_main_h 24#define _SDL_main_h 25 26#include "SDL_stdinc.h" 27 28/** @file SDL_main.h 29 * Redefine main() on Win32 and MacOS so that it is called by winmain.c 30 */ 31 32#if defined(__WIN32__) || \ 33 (defined(__MWERKS__) && !defined(__BEOS__)) || \ 34 defined(__MACOS__) || defined(__MACOSX__) || \ 35 defined(__SYMBIAN32__) || defined(QWS) 36 37#ifdef __cplusplus 38#define C_LINKAGE "C" 39#else 40#define C_LINKAGE 41#endif /* __cplusplus */ 42 43/** The application's main() function must be called with C linkage, 44 * and should be declared like this: 45 * @code 46 * #ifdef __cplusplus 47 * extern "C" 48 * #endif 49 * int main(int argc, char *argv[]) 50 * { 51 * } 52 * @endcode 53 */ 54#define main SDL_main 55 56/** The prototype for the application's main() function */ 57extern C_LINKAGE int SDL_main(int argc, char *argv[]); 58 59 60/** @name From the SDL library code -- needed for registering the app on Win32 */ 61/*@{*/ 62#ifdef __WIN32__ 63 64#include "begin_code.h" 65#ifdef __cplusplus 66extern "C" { 67#endif 68 69/** This should be called from your WinMain() function, if any */ 70extern DECLSPEC void SDLCALL SDL_SetModuleHandle(void *hInst); 71/** This can also be called, but is no longer necessary */ 72extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style, void *hInst); 73/** This can also be called, but is no longer necessary (SDL_Quit calls it) */ 74extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); 75#ifdef __cplusplus 76} 77#endif 78#include "close_code.h" 79#endif 80/*@}*/ 81 82/** @name From the SDL library code -- needed for registering QuickDraw on MacOS */ 83/*@{*/ 84#if defined(__MACOS__) 85 86#include "begin_code.h" 87#ifdef __cplusplus 88extern "C" { 89#endif 90 91/** Forward declaration so we don't need to include QuickDraw.h */ 92struct QDGlobals; 93 94/** This should be called from your main() function, if any */ 95extern DECLSPEC void SDLCALL SDL_InitQuickDraw(struct QDGlobals *the_qd); 96 97#ifdef __cplusplus 98} 99#endif 100#include "close_code.h" 101#endif 102/*@}*/ 103 104#endif /* Need to redefine main()? */ 105 106#endif /* _SDL_main_h */ 107