The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/include/ansi.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* The <ansi.h> header attempts to decide whether the compiler has enough
    2  * conformance to Standard C for Minix to take advantage of.  If so, the
    3  * symbol _ANSI is defined (as 31459).  Otherwise _ANSI is not defined
    4  * here, but it may be defined by applications that want to bend the rules.
    5  * The magic number in the definition is to inhibit unnecessary bending
    6  * of the rules.  (For consistency with the new '#ifdef _ANSI" tests in
    7  * the headers, _ANSI should really be defined as nothing, but that would
    8  * break many library routines that use "#if _ANSI".)
    9 
   10  * If _ANSI ends up being defined, a macro
   11  *
   12  *      _PROTOTYPE(function, params)
   13  *
   14  * is defined.  This macro expands in different ways, generating either
   15  * ANSI Standard C prototypes or old-style K&R (Kernighan & Ritchie)
   16  * prototypes, as needed.  Finally, some programs use _CONST, _VOIDSTAR etc
   17  * in such a way that they are portable over both ANSI and K&R compilers.
   18  * The appropriate macros are defined here.
   19  */
   20 
   21 #ifndef _ANSI_H
   22 #define _ANSI_H
   23 
   24 #if __STDC__ == 1
   25 #define _ANSI           31459   /* compiler claims full ANSI conformance */
   26 #endif
   27 
   28 #ifdef __GNUC__
   29 #define _ANSI           31459   /* gcc conforms enough even in non-ANSI mode */
   30 #endif
   31 
   32 #ifdef _ANSI
   33 
   34 /* Keep everything for ANSI prototypes. */
   35 #define _PROTOTYPE(function, params)    function params
   36 #define _ARGS(params)                   params
   37 
   38 #define _VOIDSTAR       void *
   39 #define _VOID           void
   40 #define _CONST          const
   41 #define _VOLATILE       volatile
   42 #define _SIZET          size_t
   43 
   44 #else
   45 
   46 /* Throw away the parameters for K&R prototypes. */
   47 #define _PROTOTYPE(function, params)    function()
   48 #define _ARGS(params)                   ()
   49 
   50 #define _VOIDSTAR       void *
   51 #define _VOID           void
   52 #define _CONST
   53 #define _VOLATILE
   54 #define _SIZET          int
   55 
   56 #endif /* _ANSI */
   57 
   58 /* This should be defined as restrict when a C99 compiler is used. */
   59 #define _RESTRICT
   60 
   61 /* Setting any of _MINIX, _POSIX_C_SOURCE or _POSIX2_SOURCE implies
   62  * _POSIX_SOURCE.  (Seems wrong to put this here in ANSI space.)
   63  */
   64 #if defined(_MINIX) || _POSIX_C_SOURCE > 0 || defined(_POSIX2_SOURCE)
   65 #undef _POSIX_SOURCE
   66 #define _POSIX_SOURCE   1
   67 #endif
   68 
   69 #endif /* ANSI_H */

Cache object: e56e84f0f8e9e297a23557a98bd83ff0


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.