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

  1. /***
  2. *stdio.h - definitions/declarations for standard I/O routines
  3. *
  4. *       Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
  5. *
  6. *Purpose:
  7. *       This file defines the structures, values, macros, and functions
  8. *       used by the level 2 I/O ("standard I/O") routines.
  9. *       [ANSI/System V]
  10. *
  11. *       [Public]
  12. *
  13. ****/
  14.  
  15. #if _MSC_VER > 1000
  16. #pragma once
  17. #endif  /* _MSC_VER > 1000 */
  18.  
  19. #ifndef _INC_STDIO
  20. #define _INC_STDIO
  21.  
  22. #if !defined (_WIN32) && !defined (_MAC)
  23. #error ERROR: Only Mac or Win32 targets supported!
  24. #endif  /* !defined (_WIN32) && !defined (_MAC) */
  25.  
  26. #ifndef _CRTBLD
  27. /* This version of the header files is NOT for user programs.
  28.  * It is intended for use when building the C runtimes ONLY.
  29.  * The version intended for public use will not have this message.
  30.  */
  31. #error ERROR: Use of C runtime library internal header file.
  32. #endif  /* _CRTBLD */
  33.  
  34. #ifdef _MSC_VER
  35. /*
  36.  * Currently, all MS C compilers for Win32 platforms default to 8 byte
  37.  * alignment.
  38.  */
  39. #pragma pack(push,8)
  40. #endif  /* _MSC_VER */
  41.  
  42. #ifdef __cplusplus
  43. extern "C" {
  44. #endif  /* __cplusplus */
  45.  
  46. #ifndef _INTERNAL_IFSTRIP_
  47. #include <cruntime.h>
  48. #endif  /* _INTERNAL_IFSTRIP_ */
  49.  
  50.  
  51. /* Define _CRTIMP */
  52.  
  53. #ifndef _CRTIMP
  54. #ifdef CRTDLL
  55. #define _CRTIMP __declspec(dllexport)
  56. #else  /* CRTDLL */
  57. #ifdef _DLL
  58. #define _CRTIMP __declspec(dllimport)
  59. #else  /* _DLL */
  60. #define _CRTIMP
  61. #endif  /* _DLL */
  62. #endif  /* CRTDLL */
  63. #endif  /* _CRTIMP */
  64.  
  65.  
  66. /* Define __cdecl for non-Microsoft compilers */
  67.  
  68. #if (!defined (_MSC_VER) && !defined (__cdecl))
  69. #define __cdecl
  70. #endif  /* (!defined (_MSC_VER) && !defined (__cdecl)) */
  71.  
  72. /* Define _CRTAPI1 (for compatibility with the NT SDK) */
  73.  
  74. #ifndef _CRTAPI1
  75. #if _MSC_VER >= 800 && _M_IX86 >= 300
  76. #define _CRTAPI1 __cdecl
  77. #else  /* _MSC_VER >= 800 && _M_IX86 >= 300 */
  78. #define _CRTAPI1
  79. #endif  /* _MSC_VER >= 800 && _M_IX86 >= 300 */
  80. #endif  /* _CRTAPI1 */
  81.  
  82.  
  83. #ifndef _SIZE_T_DEFINED
  84. typedef unsigned int size_t;
  85. #define _SIZE_T_DEFINED
  86. #endif  /* _SIZE_T_DEFINED */
  87.  
  88.  
  89. #ifndef _MAC
  90. #ifndef _WCHAR_T_DEFINED
  91. typedef unsigned short wchar_t;
  92. #define _WCHAR_T_DEFINED
  93. #endif  /* _WCHAR_T_DEFINED */
  94.  
  95.  
  96. #ifndef _WCTYPE_T_DEFINED
  97. typedef wchar_t wint_t;
  98. typedef wchar_t wctype_t;
  99. #define _WCTYPE_T_DEFINED
  100. #endif  /* _WCTYPE_T_DEFINED */
  101. #endif  /* _MAC */
  102.  
  103.  
  104. #ifndef _VA_LIST_DEFINED
  105. #ifdef _M_ALPHA
  106. typedef struct {
  107.         char *a0;       /* pointer to first homed integer argument */
  108.         int offset;     /* byte offset of next parameter */
  109. } va_list;
  110. #else  /* _M_ALPHA */
  111. typedef char *  va_list;
  112. #endif  /* _M_ALPHA */
  113. #define _VA_LIST_DEFINED
  114. #endif  /* _VA_LIST_DEFINED */
  115.  
  116.  
  117. /* Buffered I/O macros */
  118.  
  119. #if defined (_M_MPPC)
  120. #define BUFSIZ  4096
  121. #else  /* defined (_M_MPPC) */
  122. #define BUFSIZ  512
  123. #endif  /* defined (_M_MPPC) */
  124.  
  125. #ifndef _INTERNAL_IFSTRIP_
  126. /*
  127.  * Real default size for stdio buffers
  128.  */
  129. #define _INTERNAL_BUFSIZ    4096
  130. #define _SMALL_BUFSIZ       512
  131. #endif  /* _INTERNAL_IFSTRIP_ */
  132.  
  133. /*
  134.  * Default number of supported streams. _NFILE is confusing and obsolete, but
  135.  * supported anyway for backwards compatibility.
  136.  */
  137. #define _NFILE      _NSTREAM_
  138.  
  139. #ifdef _WIN32
  140.  
  141. #define _NSTREAM_   512
  142.  
  143. /*
  144.  * Number of entries in _iob[] (declared below). Note that _NSTREAM_ must be
  145.  * greater than or equal to _IOB_ENTRIES.
  146.  */
  147. #define _IOB_ENTRIES 20
  148.  
  149. #else  /* _WIN32 */
  150.  
  151. #ifdef CRTDLL
  152. #define _NSTREAM_   128         /* *MUST* match the value under ifdef _DLL! */
  153. #else  /* CRTDLL */
  154. #ifdef _DLL
  155. #define _NSTREAM_   128
  156. #else  /* _DLL */
  157. #ifdef _MT
  158. #define _NSTREAM_   40
  159. #else  /* _MT */
  160. #define _NSTREAM_   20
  161. #endif  /* _MT */
  162. #endif  /* _DLL */
  163. #endif  /* CRTDLL */
  164.  
  165. #endif  /* _WIN32 */
  166.  
  167. #define EOF     (-1)
  168.  
  169.  
  170. #ifndef _FILE_DEFINED
  171. struct _iobuf {
  172.         char *_ptr;
  173.         int   _cnt;
  174.         char *_base;
  175.         int   _flag;
  176.         int   _file;
  177.         int   _charbuf;
  178.         int   _bufsiz;
  179.         char *_tmpfname;
  180.         };
  181. typedef struct _iobuf FILE;
  182. #define _FILE_DEFINED
  183. #endif  /* _FILE_DEFINED */
  184.  
  185.  
  186. #ifndef _MAC
  187.  
  188. /* Directory where temporary files may be created. */
  189.  
  190. #define _P_tmpdir   "\\"
  191. #define _wP_tmpdir  L"\\"
  192.  
  193. /* L_tmpnam = size of P_tmpdir
  194.  *            + 1 (in case P_tmpdir does not end in "/")
  195.  *            + 12 (for the filename string)
  196.  *            + 1 (for the null terminator)
  197.  */
  198. #define L_tmpnam sizeof(_P_tmpdir)+12
  199.  
  200. #else  /* _MAC */
  201.  
  202. #define L_tmpnam 255
  203.  
  204. #endif  /* _MAC */
  205.  
  206.  
  207.  
  208.  
  209. /* Seek method constants */
  210.  
  211. #define SEEK_CUR    1
  212. #define SEEK_END    2
  213. #define SEEK_SET    0
  214.  
  215.  
  216. #define FILENAME_MAX    260
  217. #define FOPEN_MAX       20
  218. #define _SYS_OPEN       20
  219. #define TMP_MAX         32767
  220.  
  221.  
  222. /* Define NULL pointer value */
  223.  
  224. #ifndef NULL
  225. #ifdef __cplusplus
  226. #define NULL    0
  227. #else  /* __cplusplus */
  228. #define NULL    ((void *)0)
  229. #endif  /* __cplusplus */
  230. #endif  /* NULL */
  231.  
  232.  
  233. /* Declare _iob[] array */
  234.  
  235. #ifndef _STDIO_DEFINED
  236. #ifndef _INTERNAL_IFSTRIP_
  237. #if defined (_DLL) && defined (_M_IX86)
  238. /* Retained for compatibility with VC++ 5.0 and earlier versions */
  239. _CRTIMP extern FILE * __cdecl __p__iob(void);
  240. #endif  /* defined (_DLL) && defined (_M_IX86) */
  241. #endif  /* _INTERNAL_IFSTRIP_ */
  242. _CRTIMP extern FILE _iob[];
  243. #endif  /* _STDIO_DEFINED */
  244.  
  245.  
  246. /* Define file position type */
  247.  
  248. #ifndef _FPOS_T_DEFINED
  249. #undef _FPOSOFF
  250.  
  251.  
  252. #if !__STDC__ && _INTEGRAL_MAX_BITS >= 64   
  253. typedef __int64 fpos_t;
  254. #define _FPOSOFF(fp) ((long)(fp))
  255. #else  /* !__STDC__ && _INTEGRAL_MAX_BITS >= 64    */
  256. typedef struct fpos_t {
  257.         unsigned int lopart;
  258.         int          hipart;
  259.         } fpos_t;
  260. #define _FPOSOFF(fp) ((long)(fp).lopart)
  261. #endif  /* !__STDC__ && _INTEGRAL_MAX_BITS >= 64    */
  262.  
  263. #define _FPOS_T_DEFINED
  264. #endif  /* _FPOS_T_DEFINED */
  265.  
  266.  
  267. #define stdin  (&_iob[0])
  268. #define stdout (&_iob[1])
  269. #define stderr (&_iob[2])
  270.  
  271.  
  272. #define _IOREAD         0x0001
  273. #define _IOWRT          0x0002
  274.  
  275. #define _IOFBF          0x0000
  276. #define _IOLBF          0x0040
  277. #define _IONBF          0x0004
  278.  
  279. #define _IOMYBUF        0x0008
  280. #define _IOEOF          0x0010
  281. #define _IOERR          0x0020
  282. #define _IOSTRG         0x0040
  283. #define _IORW           0x0080
  284.  
  285.  
  286. /* Function prototypes */
  287.  
  288. #ifndef _STDIO_DEFINED
  289.  
  290. _CRTIMP int __cdecl _filbuf(FILE *);
  291. _CRTIMP int __cdecl _flsbuf(int, FILE *);
  292.  
  293. _CRTIMP FILE * __cdecl _fsopen(const char *, const char *, int);
  294.  
  295. _CRTIMP void __cdecl clearerr(FILE *);
  296. _CRTIMP int __cdecl fclose(FILE *);
  297. _CRTIMP int __cdecl _fcloseall(void);
  298.  
  299. _CRTIMP FILE * __cdecl _fdopen(int, const char *);
  300.  
  301. _CRTIMP int __cdecl feof(FILE *);
  302. _CRTIMP int __cdecl ferror(FILE *);
  303. _CRTIMP int __cdecl fflush(FILE *);
  304. _CRTIMP int __cdecl fgetc(FILE *);
  305. _CRTIMP int __cdecl _fgetchar(void);
  306. _CRTIMP int __cdecl fgetpos(FILE *, fpos_t *);
  307. _CRTIMP char * __cdecl fgets(char *, int, FILE *);
  308.  
  309. _CRTIMP int __cdecl _fileno(FILE *);
  310.  
  311. _CRTIMP int __cdecl _flushall(void);
  312. _CRTIMP FILE * __cdecl fopen(const char *, const char *);
  313. _CRTIMP int __cdecl fprintf(FILE *, const char *, ...);
  314. _CRTIMP int __cdecl fputc(int, FILE *);
  315. _CRTIMP int __cdecl _fputchar(int);
  316. _CRTIMP int __cdecl fputs(const char *, FILE *);
  317. _CRTIMP size_t __cdecl fread(void *, size_t, size_t, FILE *);
  318. _CRTIMP FILE * __cdecl freopen(const char *, const char *, FILE *);
  319. _CRTIMP int __cdecl fscanf(FILE *, const char *, ...);
  320. _CRTIMP int __cdecl fsetpos(FILE *, const fpos_t *);
  321. _CRTIMP int __cdecl fseek(FILE *, long, int);
  322. _CRTIMP long __cdecl ftell(FILE *);
  323. _CRTIMP size_t __cdecl fwrite(const void *, size_t, size_t, FILE *);
  324. _CRTIMP int __cdecl getc(FILE *);
  325. _CRTIMP int __cdecl getchar(void);
  326. _CRTIMP int __cdecl _getmaxstdio(void);
  327. _CRTIMP char * __cdecl gets(char *);
  328. _CRTIMP int __cdecl _getw(FILE *);
  329. _CRTIMP void __cdecl perror(const char *);
  330. _CRTIMP int __cdecl _pclose(FILE *);
  331. _CRTIMP FILE * __cdecl _popen(const char *, const char *);
  332. _CRTIMP int __cdecl printf(const char *, ...);
  333. _CRTIMP int __cdecl putc(int, FILE *);
  334. _CRTIMP int __cdecl putchar(int);
  335. _CRTIMP int __cdecl puts(const char *);
  336. _CRTIMP int __cdecl _putw(int, FILE *);
  337. _CRTIMP int __cdecl remove(const char *);
  338. _CRTIMP int __cdecl rename(const char *, const char *);
  339. _CRTIMP void __cdecl rewind(FILE *);
  340. _CRTIMP int __cdecl _rmtmp(void);
  341. _CRTIMP int __cdecl scanf(const char *, ...);
  342. _CRTIMP void __cdecl setbuf(FILE *, char *);
  343. _CRTIMP int __cdecl _setmaxstdio(int);
  344. _CRTIMP int __cdecl setvbuf(FILE *, char *, int, size_t);
  345. _CRTIMP int __cdecl _snprintf(char *, size_t, const char *, ...);
  346. _CRTIMP int __cdecl sprintf(char *, const char *, ...);
  347. _CRTIMP int __cdecl sscanf(const char *, const char *, ...);
  348. _CRTIMP char * __cdecl _tempnam(const char *, const char *);
  349. _CRTIMP FILE * __cdecl tmpfile(void);
  350. _CRTIMP char * __cdecl tmpnam(char *);
  351. _CRTIMP int __cdecl ungetc(int, FILE *);
  352. _CRTIMP int __cdecl _unlink(const char *);
  353. _CRTIMP int __cdecl vfprintf(FILE *, const char *, va_list);
  354. _CRTIMP int __cdecl vprintf(const char *, va_list);
  355. _CRTIMP int __cdecl _vsnprintf(char *, size_t, const char *, va_list);
  356. _CRTIMP int __cdecl vsprintf(char *, const char *, va_list);
  357.  
  358. #ifndef _MAC
  359. #ifndef _WSTDIO_DEFINED
  360.  
  361. /* wide function prototypes, also declared in wchar.h  */
  362.  
  363. #ifndef WEOF
  364. #define WEOF (wint_t)(0xFFFF)
  365. #endif  /* WEOF */
  366.  
  367. _CRTIMP FILE * __cdecl _wfsopen(const wchar_t *, const wchar_t *, int);
  368.  
  369. _CRTIMP wint_t __cdecl fgetwc(FILE *);
  370. _CRTIMP wint_t __cdecl _fgetwchar(void);
  371. _CRTIMP wint_t __cdecl fputwc(wint_t, FILE *);
  372. _CRTIMP wint_t __cdecl _fputwchar(wint_t);
  373. _CRTIMP wint_t __cdecl getwc(FILE *);
  374. _CRTIMP wint_t __cdecl getwchar(void);
  375. _CRTIMP wint_t __cdecl putwc(wint_t, FILE *);
  376. _CRTIMP wint_t __cdecl putwchar(wint_t);
  377. _CRTIMP wint_t __cdecl ungetwc(wint_t, FILE *);
  378.  
  379. _CRTIMP wchar_t * __cdecl fgetws(wchar_t *, int, FILE *);
  380. _CRTIMP int __cdecl fputws(const wchar_t *, FILE *);
  381. _CRTIMP wchar_t * __cdecl _getws(wchar_t *);
  382. _CRTIMP int __cdecl _putws(const wchar_t *);
  383.  
  384. _CRTIMP int __cdecl fwprintf(FILE *, const wchar_t *, ...);
  385. _CRTIMP int __cdecl wprintf(const wchar_t *, ...);
  386. _CRTIMP int __cdecl _snwprintf(wchar_t *, size_t, const wchar_t *, ...);
  387. _CRTIMP int __cdecl swprintf(wchar_t *, const wchar_t *, ...);
  388. _CRTIMP int __cdecl vfwprintf(FILE *, const wchar_t *, va_list);
  389. _CRTIMP int __cdecl vwprintf(const wchar_t *, va_list);
  390. _CRTIMP int __cdecl _vsnwprintf(wchar_t *, size_t, const wchar_t *, va_list);
  391. _CRTIMP int __cdecl vswprintf(wchar_t *, const wchar_t *, va_list);
  392. _CRTIMP int __cdecl fwscanf(FILE *, const wchar_t *, ...);
  393. _CRTIMP int __cdecl swscanf(const wchar_t *, const wchar_t *, ...);
  394. _CRTIMP int __cdecl wscanf(const wchar_t *, ...);
  395.  
  396. #define getwchar()              fgetwc(stdin)
  397. #define putwchar(_c)            fputwc((_c),stdout)
  398. #define getwc(_stm)             fgetwc(_stm)
  399. #define putwc(_c,_stm)          fputwc(_c,_stm)
  400.  
  401. _CRTIMP FILE * __cdecl _wfdopen(int, const wchar_t *);
  402. _CRTIMP FILE * __cdecl _wfopen(const wchar_t *, const wchar_t *);
  403. _CRTIMP FILE * __cdecl _wfreopen(const wchar_t *, const wchar_t *, FILE *);
  404. _CRTIMP void __cdecl _wperror(const wchar_t *);
  405. _CRTIMP FILE * __cdecl _wpopen(const wchar_t *, const wchar_t *);
  406. _CRTIMP int __cdecl _wremove(const wchar_t *);
  407. _CRTIMP wchar_t * __cdecl _wtempnam(const wchar_t *, const wchar_t *);
  408. _CRTIMP wchar_t * __cdecl _wtmpnam(wchar_t *);
  409.  
  410. #ifdef _MT
  411. wint_t __cdecl _getwc_lk(FILE *);                                           /* _MTHREAD_ONLY */
  412. wint_t __cdecl _putwc_lk(wint_t, FILE *);                                   /* _MTHREAD_ONLY */
  413. wint_t __cdecl _ungetwc_lk(wint_t, FILE *);                                 /* _MTHREAD_ONLY */
  414. char * __cdecl _wtmpnam_lk(char *);                                         /* _MTHREAD_ONLY */
  415. #else  /* _MT */
  416. #define _getwc_lk(_stm)                         fgetwc(_stm)                /* _MTHREAD_ONLY */
  417. #define _putwc_lk(_c,_stm)                      fputwc(_c,_stm)             /* _MTHREAD_ONLY */
  418. #define _ungetwc_lk(_c,_stm)                    ungetwc(_c,_stm)            /* _MTHREAD_ONLY */
  419. #define _wtmpnam_lk(_string)                    _wtmpnam(_string)           /* _MTHREAD_ONLY */
  420. #endif  /* _MT */
  421.  
  422. #define _WSTDIO_DEFINED
  423. #endif  /* _WSTDIO_DEFINED */
  424. #endif  /* _MAC */
  425.  
  426. #define _STDIO_DEFINED
  427. #endif  /* _STDIO_DEFINED */
  428.  
  429.  
  430. /* Macro definitions */
  431.  
  432. #define feof(_stream)     ((_stream)->_flag & _IOEOF)
  433. #define ferror(_stream)   ((_stream)->_flag & _IOERR)
  434. #define _fileno(_stream)  ((_stream)->_file)
  435. #define getc(_stream)     (--(_stream)->_cnt >= 0 \
  436.                 ? 0xff & *(_stream)->_ptr++ : _filbuf(_stream))
  437. #define putc(_c,_stream)  (--(_stream)->_cnt >= 0 \
  438.                 ? 0xff & (*(_stream)->_ptr++ = (char)(_c)) :  _flsbuf((_c),(_stream)))
  439. #define getchar()         getc(stdin)
  440. #define putchar(_c)       putc((_c),stdout)
  441.  
  442. #define _getc_lk(_stream)       (--(_stream)->_cnt >= 0 ? 0xff & *(_stream)->_ptr++ : _filbuf(_stream))                                             /* _MTHREAD_ONLY */
  443. #define _putc_lk(_c,_stream)    (--(_stream)->_cnt >= 0 ? 0xff & (*(_stream)->_ptr++ = (char)(_c)) :  _flsbuf((_c),(_stream)))  /* _MTHREAD_ONLY */
  444. #define _getchar_lk()           _getc_lk(stdin)                                                                                                                                 /* _MTHREAD_ONLY */
  445. #define _putchar_lk(_c)         _putc_lk((_c),stdout)                                                                                                                       /* _MTHREAD_ONLY */
  446. #ifndef _MAC
  447. #define _getwchar_lk()          _getwc_lk(stdin)                                                                                                                                    /* _MTHREAD_ONLY */
  448. #define _putwchar_lk(_c)        _putwc_lk((_c),stdout)                                                                                                                      /* _MTHREAD_ONLY */
  449. #endif  /* _MAC */
  450.  
  451.  
  452. #ifdef _MT
  453. #undef  getc
  454. #undef  putc
  455. #undef  getchar
  456. #undef  putchar
  457. #endif  /* _MT */
  458.  
  459. #ifdef _MT
  460. int __cdecl _fclose_lk(FILE *);                                             /* _MTHREAD_ONLY */
  461. int __cdecl _fflush_lk(FILE *);                                             /* _MTHREAD_ONLY */
  462. size_t __cdecl _fread_lk(void *, size_t, size_t, FILE *);                   /* _MTHREAD_ONLY */
  463. int __cdecl _fseek_lk(FILE *, long, int);                                   /* _MTHREAD_ONLY */
  464. long __cdecl _ftell_lk(FILE *);                                             /* _MTHREAD_ONLY */
  465. size_t __cdecl _fwrite_lk(const void *, size_t, size_t, FILE *);            /* _MTHREAD_ONLY */
  466. char * __cdecl _tmpnam_lk(char *);                                          /* _MTHREAD_ONLY */
  467. int __cdecl _ungetc_lk(int, FILE *);                                        /* _MTHREAD_ONLY */
  468. #else  /* _MT */
  469. #define _fclose_lk(_stm)                        fclose(_stm)                /* _MTHREAD_ONLY */
  470. #define _fflush_lk(_stm)                        fflush(_stm)                /* _MTHREAD_ONLY */
  471. #define _fread_lk(_buf,_siz,_cnt,_stm)          fread(_buf,_siz,_cnt,_stm)  /* _MTHREAD_ONLY */
  472. #define _fseek_lk(_stm,_offset,_origin)         fseek(_stm,_offset,_origin) /* _MTHREAD_ONLY */
  473. #define _ftell_lk(_stm)                         ftell(_stm)                 /* _MTHREAD_ONLY */
  474. #define _fwrite_lk(_buf,_siz,_cnt,_stm)         fwrite(_buf,_siz,_cnt,_stm) /* _MTHREAD_ONLY */
  475. #define _tmpnam_lk(_string)                     tmpnam(_string)             /* _MTHREAD_ONLY */
  476. #define _ungetc_lk(_c,_stm)                     ungetc(_c,_stm)             /* _MTHREAD_ONLY */
  477. #endif  /* _MT */
  478.  
  479.  
  480. #if !__STDC__
  481.  
  482. /* Non-ANSI names for compatibility */
  483.  
  484. #define P_tmpdir  _P_tmpdir
  485. #define SYS_OPEN  _SYS_OPEN
  486.  
  487. _CRTIMP int __cdecl fcloseall(void);
  488. _CRTIMP FILE * __cdecl fdopen(int, const char *);
  489. _CRTIMP int __cdecl fgetchar(void);
  490. _CRTIMP int __cdecl fileno(FILE *);
  491. _CRTIMP int __cdecl flushall(void);
  492. _CRTIMP int __cdecl fputchar(int);
  493. _CRTIMP int __cdecl getw(FILE *);
  494. _CRTIMP int __cdecl putw(int, FILE *);
  495. _CRTIMP int __cdecl rmtmp(void);
  496. _CRTIMP char * __cdecl tempnam(const char *, const char *);
  497. _CRTIMP int __cdecl unlink(const char *);
  498.  
  499. #endif  /* !__STDC__ */
  500.  
  501. #ifdef __cplusplus
  502. }
  503. #endif  /* __cplusplus */
  504.  
  505. #ifdef _MSC_VER
  506. #pragma pack(pop)
  507. #endif  /* _MSC_VER */
  508.  
  509. #endif  /* _INC_STDIO */
  510.