home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / crt / src / cruntime.h < prev    next >
C/C++ Source or Header  |  1998-06-17  |  3KB  |  133 lines

  1. /***
  2. *cruntime.h - definitions specific to the target operating system and hardware
  3. *
  4. *       Copyright (c) 1990-1997, Microsoft Corporation. All rights reserved.
  5. *
  6. *Purpose:
  7. *       This header file contains widely used definitions specific to the
  8. *       host operating system and hardware. It is included by every C source
  9. *       and most every other header file.
  10. *
  11. *       [Internal]
  12. *
  13. ****/
  14.  
  15. #if _MSC_VER > 1000
  16. #pragma once
  17. #endif  /* _MSC_VER > 1000 */
  18.  
  19. #ifndef _INC_CRUNTIME
  20. #define _INC_CRUNTIME
  21.  
  22. #ifndef _CRTBLD
  23. /*
  24.  * This is an internal C runtime header file. It is used when building
  25.  * the C runtimes only. It is not to be used as a public header file.
  26.  */
  27. #error ERROR: Use of C runtime library internal header file.
  28. #endif  /* _CRTBLD */
  29.  
  30. #if defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC)
  31. #define UNALIGNED __unaligned
  32. #else  /* defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC) */
  33. #define UNALIGNED
  34. #endif  /* defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC) */
  35.  
  36. /*
  37.  * Does _VA_LIST_T still need to be defined in this file?
  38.  */
  39. #ifdef _M_ALPHA
  40. #define _VA_LIST_T \
  41.     struct { \
  42.         char *a0;       /* pointer to first homed integer argument */ \
  43.         int offset;     /* byte offset of next parameter */ \
  44.     }
  45. #else  /* _M_ALPHA */
  46. #define _VA_LIST_T  char *
  47. #endif  /* _M_ALPHA */
  48.  
  49. #ifdef _M_IX86
  50. /*
  51.  * 386/486
  52.  */
  53. #define REG1    register
  54. #define REG2    register
  55. #define REG3    register
  56. #define REG4
  57. #define REG5
  58. #define REG6
  59. #define REG7
  60. #define REG8
  61. #define REG9
  62.  
  63. #elif (defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC))
  64. /*
  65.  * MIPS, ALPHA, or PPC
  66.  */
  67. #define REG1    register
  68. #define REG2    register
  69. #define REG3    register
  70. #define REG4    register
  71. #define REG5    register
  72. #define REG6    register
  73. #define REG7    register
  74. #define REG8    register
  75. #define REG9    register
  76.  
  77. #elif (defined (_M_M68K) || defined (_M_MPPC))
  78. /*
  79.  * Macros defining the calling type of a function
  80.  */
  81.  
  82. #define _CALLTYPE1      __cdecl    /* old -- check source user visible functions */
  83. #define _CALLTYPE2      __cdecl    /* old -- check source user visible functions */
  84. #define _CALLTYPE3      illegal    /* old -- check source should not used*/
  85. #define _CALLTYPE4      __cdecl    /* old -- check source internal (static) functions */
  86.  
  87. /*
  88.  * Macros for defining the naming of a public variable
  89.  */
  90.  
  91. #define _VARTYPE1
  92.  
  93. /*
  94.  * Macros for register variable declarations
  95.  */
  96.  
  97. #define REG1
  98. #define REG2
  99. #define REG3
  100. #define REG4
  101. #define REG5
  102. #define REG6
  103. #define REG7
  104. #define REG8
  105. #define REG9
  106.  
  107. #else  /* (defined (_M_M68K) || defined (_M_MPPC)) */
  108.  
  109. #pragma message ("Machine register set not defined")
  110.  
  111. /*
  112.  * Unknown machine
  113.  */
  114.  
  115. #define REG1
  116. #define REG2
  117. #define REG3
  118. #define REG4
  119. #define REG5
  120. #define REG6
  121. #define REG7
  122. #define REG8
  123. #define REG9
  124.  
  125. #endif  /* (defined (_M_M68K) || defined (_M_MPPC)) */
  126.  
  127. /*
  128.  * Are the macro definitions below still needed in this file? Are they even
  129.  * correct for MIPS (probably not).
  130.  */
  131.  
  132. #endif  /* _INC_CRUNTIME */
  133.