begin_code.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:4k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997-2004 Sam Lantinga
  4.     This library is free software; you can redistribute it and/or
  5.     modify it under the terms of the GNU Library General Public
  6.     License as published by the Free Software Foundation; either
  7.     version 2 of the License, or (at your option) any later version.
  8.     This library is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.     Library General Public License for more details.
  12.     You should have received a copy of the GNU Library General Public
  13.     License along with this library; if not, write to the Free
  14.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  15.     Sam Lantinga
  16.     slouken@libsdl.org
  17. */
  18. /* This file sets things up for C dynamic library function definitions,
  19.    static inlined functions, and structures aligned at 4-byte alignment.
  20.    If you don't like ugly C preprocessor code, don't look at this file. :)
  21. */
  22. /* This shouldn't be nested -- included it around code only. */
  23. #ifdef _begin_code_h
  24. #error Nested inclusion of begin_code.h
  25. #endif
  26. #define _begin_code_h
  27. /* Some compilers use a special export keyword */
  28. #ifndef DECLSPEC
  29. # if defined(__BEOS__)
  30. #  if defined(__GNUC__)
  31. #   define DECLSPEC __declspec(dllexport)
  32. #  else
  33. #   define DECLSPEC __declspec(export)
  34. #  endif
  35. # elif defined(__WIN32__)
  36. #  ifdef __BORLANDC__
  37. #   ifdef BUILD_SDL
  38. #    define DECLSPEC 
  39. #   else
  40. #    define DECLSPEC __declspec(dllimport)
  41. #   endif
  42. #  else
  43. #   define DECLSPEC __declspec(dllexport)
  44. #  endif
  45. # elif defined(__OS2__)
  46. #  ifdef __WATCOMC__
  47. #   ifdef BUILD_SDL
  48. #    define DECLSPEC __declspec(dllexport)
  49. #   else
  50. #    define DECLSPEC
  51. #   endif
  52. #  else
  53. #   define DECLSPEC
  54. #  endif
  55. # else
  56. #  if defined(__GNUC__) && __GNUC__ >= 4
  57. #   define DECLSPEC __attribute__ ((visibility("default")))
  58. #  else
  59. #   define DECLSPEC
  60. #  endif
  61. # endif
  62. #endif
  63. /* By default SDL uses the C calling convention */
  64. #ifndef SDLCALL
  65. #if defined(__WIN32__) && !defined(__GNUC__)
  66. #define SDLCALL __cdecl
  67. #else
  68. #ifdef __OS2__
  69. /* But on OS/2, we use the _System calling convention */
  70. /* to be compatible with every compiler */
  71. #define SDLCALL _System
  72. #else
  73. #define SDLCALL
  74. #endif
  75. #endif
  76. #endif /* SDLCALL */
  77. #ifdef __SYMBIAN32__ 
  78. #ifndef EKA2 
  79. #undef DECLSPEC
  80. #define DECLSPEC
  81. #elif !defined(__WINS__)
  82. #undef DECLSPEC
  83. #define DECLSPEC __declspec(dllexport)
  84. #endif /* !EKA2 */
  85. #endif /* __SYMBIAN32__ */
  86. /* Force structure packing at 4 byte alignment.
  87.    This is necessary if the header is included in code which has structure
  88.    packing set to an alternate value, say for loading structures from disk.
  89.    The packing is reset to the previous value in close_code.h
  90.  */
  91. #if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
  92. #ifdef _MSC_VER
  93. #pragma warning(disable: 4103)
  94. #endif
  95. #ifdef __BORLANDC__
  96. #pragma nopackwarning
  97. #endif
  98. #pragma pack(push,4)
  99. #elif (defined(__MWERKS__) && defined(__MACOS__))
  100. #pragma options align=mac68k4byte
  101. #pragma enumsalwaysint on
  102. #endif /* Compiler needs structure packing set */
  103. /* Set up compiler-specific options for inlining functions */
  104. #ifndef SDL_INLINE_OKAY
  105. #ifdef __GNUC__
  106. #define SDL_INLINE_OKAY
  107. #else
  108. /* Add any special compiler-specific cases here */
  109. #if defined(_MSC_VER) || defined(__BORLANDC__) || 
  110.     defined(__DMC__) || defined(__SC__) || 
  111.     defined(__WATCOMC__) || defined(__LCC__) || 
  112.     defined(__DECC) || defined(__EABI__)
  113. #ifndef __inline__
  114. #define __inline__ __inline
  115. #endif
  116. #define SDL_INLINE_OKAY
  117. #else
  118. #if !defined(__MRC__) && !defined(_SGI_SOURCE)
  119. #ifndef __inline__
  120. #define __inline__ inline
  121. #endif
  122. #define SDL_INLINE_OKAY
  123. #endif /* Not a funky compiler */
  124. #endif /* Visual C++ */
  125. #endif /* GNU C */
  126. #endif /* SDL_INLINE_OKAY */
  127. /* If inlining isn't supported, remove "__inline__", turning static
  128.    inlined functions into static functions (resulting in code bloat
  129.    in all files which include the offending header files)
  130. */
  131. #ifndef SDL_INLINE_OKAY
  132. #define __inline__
  133. #endif
  134. /* Apparently this is needed by several Windows compilers */
  135. #if !defined(__MACH__)
  136. #ifndef NULL
  137. #ifdef __cplusplus
  138. #define NULL 0
  139. #else
  140. #define NULL ((void *)0)
  141. #endif
  142. #endif /* NULL */
  143. #endif /* ! Mac OS X - breaks precompiled headers */