Pristine Ack-5.5
[Ack-5.5.git] / lib / minix / include / ansi.h
1 /* The <ansi.h> header checks whether the compiler claims conformance to ANSI
2  * Standard C. If so, the symbol _ANSI is defined as 1, otherwise it is 
3  * defined as 0.  Based on the result, a macro
4  *
5  *      _PROTOTYPE(function, params)
6  *
7  * is defined.  This macro expands in different ways, generating either
8  * ANSI Standard C prototypes or old-style K&R (Kernighan & Ritchie) 
9  * prototypes, as needed.  Finally, some programs use _CONST, _VOIDSTAR etc
10  * in such a way that they are portable over both ANSI and K&R compilers.
11  * The appropriate macros are defined here.
12  */
13
14 #ifndef _ANSI_H
15 #define _ANSI_H
16
17 /* ANSI C requires __STDC__ to be defined as 1 for an ANSI C compiler.
18  * Some half-ANSI compilers define it as 0.  Get around this here.
19  */
20
21 #define _ANSI              0    /* 0 if compiler is not ANSI C, 1 if it is */
22
23 #ifdef __STDC__                 /* __STDC__ defined for (near) ANSI compilers*/
24 #if __STDC__ == 1               /* __STDC__ == 1 for conformant compilers */
25 #undef _ANSI                    /* get rid of above definition */
26 #define _ANSI              1    /* _ANSI = 1 for ANSI C compilers */
27 #endif
28 #endif
29
30 /* At this point, _ANSI has been set correctly to 0 or 1. Define the
31  * _PROTOTYPE macro to either expand both of its arguments (ANSI prototypes),
32  * only the function name (K&R prototypes).
33  */
34
35 #if _ANSI
36 #define _PROTOTYPE(function, params)    function params
37 #define _VOIDSTAR       void *
38 #define _VOID           void
39 #define _CONST          const
40 #define _VOLATILE       volatile
41 #define _SIZET          size_t
42
43 #else
44
45 #define _PROTOTYPE(function, params)    function()
46 #define _VOIDSTAR       void *
47 #define _VOID           void
48 #define _CONST
49 #define _VOLATILE
50 #define _SIZET          int
51
52 #endif /* _ANSI */
53
54 #endif /* ANSI_H */