.pl 54
.
.
#      
  .     , 
 [1] (       K&R),
    .
.      MS-DOS
. 1
  BORLAND Turbo-C V1.5
# Turbo-C    ,   K&R, 
   ANSI-.
      K&R;
     
"    C".
. 2

(K&R 2.1)
#   .      
  -C.      ,
   ,  #if 0  #endif.
. 2

(K&R 2.2)
#     $.   
      (_).
   32  .
      
   -i#.
# 32        ,
   .
. 2
 
(K&R 2.3)
#    , 
Turbo-C (TC)   ANSI- (AN).
         .
  entry  fortran,   K&R,  
 Turbo-C.
.sw
        TC      asm             TC  _cs         TC  _DH
        TC      cdecl           TC  _ds         TC  _DL
        AN      const           TC  _es         TC  _DX
        AN      enum            TC  _ss         TC  _BP
        TC      far             TC  _AH         TC  _DI
        TC      huge            TC  _AL         TC  _SI
        TC      interrupt       TC  _AX         TC  _SP
        TC      near            TC  _BH
        TC      pascal          TC  _BL
        AN      signed          TC  _CH
        AN      void            TC  _CL
        AN      volatile        TC  _CX
. 2

(K&R 2.4)
# Turbo-C    ,   K&R, 
 .
. 2
 
(K&R 2.4.1)
#      0...4294967295.
(    ,
     "".
#  U ( u),     
unsigned.    
unsigned long,     
65535,    .
.    L,   U 
     .
. 3    Turbo-C ( L  U)
------------------------------------------------------
                        
------------------------------------------------------
        __________________
0-32767                         int
32767-2147483647                long
2147483648-4294967295           unsigned long
>4294967295                  
                             ;
                              
                              
                             
        _________________
00-077777                       int
0100000-0177777                 unsigned int
01000000-017777777777           long
010000000000-0377777777777      unsigned long
>0377777777777               
     __________________
0x0000-0x7FFF                   int
0x8000-0xFFFF                   unsigned int
0x10000-0x7FFFFFFF              long
0x80000000-0xFFFFFFFF           unsigned long
>0xFFFFFFFF                  
. 2
 
(K&R 2.4.3)
#    16-   int.
# Turbo-C  ANSI-, 
   .
, '\x1F'  '\x82'.
#  ,   ANSI-,
  ESC-.
  ESC-    ,
  K&R.
. 3 ESC- Turbo-C
------------------------------------------------------
          
------------------------------------------------------
\a                  0x07   BEL       
\v                  0x0B   VT        
                                       
\"                  0x22   "          
\?                  0x3F   ?
\DDD                           ,  /ddd  K&R
\xHHH               0xHHH      HHH=1,2  3
                                   
                                        
. .. Turbo-C   ,
  , 
 ESC-
      .
  ,
Turbo-C  ,    - 
ESC-,
       
.
,  \258     ,
   \25  8.
. 2
   
(K&R 2.4.4)
#  ,   double,
     .
,       
float;    F  f   .
. 2

(K&R 2.5)
# Turbo-C   
  ;   
   .
# ,
.
main()
 {
     char *p;
     p="  -  ,  Turbo-C"
       " \n "
       "    ;\n"
       "    "
       " .\n"
 }
. 2
  
(K&R 2.6)
. 3      Turbo-C
------------------------------------------------------
             ( )        
------------------------------------------------------
unsigned char           8               0-255
char                    8               -128-127
enum                    16              -32768-32767
unsigned short          16              0-65535
short                   16              -32768-32767
unsigned int            16              0-65535
int                     16              -32768-32767
unsigned long           32              0-4294967295

long                    32      -2147483648-2147483647

float                   32             3.4E-38-3.4E+38
double                  64           1.7E-308-1.7E+308
long double             64           1.7E-308-1.7E+308

pointer                 16       (near, _cs, _ds, _ss)
pointer                 32              (far, huge)
.  long double ,   
double.
. 2

(K&R 6)
. 2
Char, int  enum
(K&R 6.1)
#        16-
.    () 
    
 ,       char
 (    -K).
  signed char     ;
  unsigned char      ,
   int.
#   enum   int  ;
  int    .
. 2

(K&R 6.4)
# ,  ,    ,
     .
,    ,    ,
  ( ) (near, huge, far, _cs, _ds,
_ss, _es)       ,
   .
#        
 ,     - void (  
   ). ,  , 
      .
Turbo-C   ,   
,     -
      
   void.      
       ,  .
. 2
 
(K&R 6.6)
#     
   :
.na
 -integer  -double   
  ,  .
.na
 -     double,  
   double.
.na
 -     unsigned long,  
   unsigned long.
.na
 -     unsigned,  
   unsigned.
. 4   
------------------------------------------------------
                  
                     
------------------------------------------------------
char               int              
unsigned char      int           
                                        ()
signed char        int          ()
short              int          ,
                                  int
enum               int           
float              double        0
. 2

(K&R 7.2)
# Turbo-C    +. 
Turbo-C   ,
   (  *   +),
     .
 Turbo-C        +.
,       ,
..     ,    +,
           .
,  a, b, c  f   float, 
# f=a++(b+c)
. 1
   :   (b+c)
   a.
. 2
 
(K&R 8.2)
# Turbo-C    ,    K&R.
. 1
unsigned char
. 1
unsigned short
. 1
unsigned long
. 1
long double
. 1
enumeration
. 1
viod
#  long double   double.
. 2
 enum
# Turbo-C     ANSI-.
      

 .
,
# enum days { sun, mon, tues, wed, thur, fri, sat};
# ,   days,    ,
 (sun)       
    ,  
(mon=1, tues=2  ..).
    ; ,
   , ,   ,  
 ,   .
,
# enum coins {penny=1, nickle=5, dime=10, quarter=25};
#         
int -    .
. 2
 void
# Turbo-C   void,   ANSI-.
      ,   .
,    
   void.
,
.sw
void putmsg(void)
 {
        printf("Hello, world\n");
 }

main()
 {
        putmsg();
 }
#      void,     , 
,  , .
,          
   - ,   :
.sw
        (void) getch();
#  ,       void.
      ;   
-  ,     .
       void,  .
        (*),
..   .
. 2
 
#    K&R    -
long, short  unsigned - Turbo-C   :
signed, const  vilatile (ANSI-).
#  signed  ,    .
     
  . ,    ,
     char ( ),
   signed,   
     signed char.
 signed,    ,  signed int,
  unsigned  unsigned int.
. 2
 const
#  const,    ANSI-,
        
      ,
    .
   const    ,    
,   .
.  const,    , 
const int.
  :
.sw
        const float pi          =3.1415926;
        const       maxint      =32767;
        const *char str         ="Hello, world";
#    :
.sw
        pi  = 3.0;              /*  
                                         */
        i   = maxint--;         /*   */
        str = "Hi, there!";     /*   */
. ,   strcpy(str,"Hi, there!") ,
..       
"Hi, there!"   ,  str.
. 2
 volatile
# 
volatile
-    const.
 ,     ;    
 ,     ,  
    /. 
 
volatile  ,     
 
 ,      ,
 , ..   ()
   .   , 
     
 
 .
# :
.sw
        volatile int ticks;
        interrupt timer();
        {
                ticks++;
        }

        wait (int interval)
        {
                ticks=0;
                while(ticks<interval);
        }
#    ""   ,   
interval.
,       
   ticks   while, ..    
ticks.
. 2
 cdecl  pascal
# Turbo-C       ,
   ,  .
          :
   .
#      Turbo-C,
   , ..   
 ,    , 
  ,    .
        
(.  ,      ).
 ,  (_)  ,   
  -u-  .
# ,   ,   ,
     .   ( )
  ,  , 
  ,    
       .
. 3
pascal
#   ,    ,
   ,      ,
  ,    .
Turbo-C    .
      
pascal.  ,   
       .
(  ,    
 .)
. 3
cdecl
#        
  pascal,   -p  . ,
  ,    -  
 .
     cdecl, (  
     ).
.     include- (, stdio.h)
  cdecl.  
  ,     -p
 .
. 2
 near, far  huge
#       (*),
 ,    .
# Turbo-C     .
,   ,      
.    ""   (tiny, small, medium),
     16    
    (DS).  
""   (compact, large, huge),   
   32    
 ,   .
#   ,      ,
      ,   
 .     
near, far  huge.
#   near - 16-;    
   (DS)    .  
    .    
near,          64.
#   far - 32-;   
,   .      .
    far      
1-    Intel 8088/8086.
#   huge - 32-;  ,
    , ,     
far,  huge   :
. 1
  (==, !=, <, >, <=, >=)     
 huge;      far.
. 1
     huge   
 ,     (- );
  far  -    .
. 1
   huge     
1  ;   far   
     64 .
. 1
    huge   ,
..       
   .
. 2
  
(K&R 8.5)
# Turbo-C    .
. 2
 
#       -a, Turbo-C
    ( )  , 
   .
 :
. 1
      ( ).
. 1
 ,  -char ,     
 .
. 1
      ( ), 
 , 
    .
. 2
 
#       signed,  unsigned int 
   1  16 .     
   
  . , 
.sw
        struct mystruct {
                int             i : 2;
                unsigned        j : 5;
                int               : 4;
                int             k : 1;
                unsigned        n : 4;
        } a, b, c;
. 1
  :
. 10
.sw
 __________________________________________________
 |15|14|13|12|11 |10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
 |--|--|--|--|---|--|--|--|--|--|--|--|--|--|--|--|
 | x| x| x| x| x | x| x| x| x| x| x| x| x| x| x| x|
 |-----------|---|-----------|--------------|-----|
 |<--------->|<->|<- - - - ->|<------------>|<--->|
 |-----------|---|-----------|--------------|-----|
 |     m     | k | .|       j      |  i  |
 |___________|___|___________|______________|_____|
#         ;
   -  .
,    signed int  1 
    -1  0, ..  
    -1.
. 2

(K&R 9)
# Turbo-C     ,  
K&R.
. 2
  
(K&R 10.1)
#  extern,   ,  
   .
     ,    .
, Turbo-C  "" ,   
   
    .
# Turbo-C    ,  
  (ANSI-).    
Turbo-C,    interrupt.
. 2
  
(K&R 10.1.1)
#    external  static, Turbo-C 
     : pascal, cdecl, interrupt,
near, far  huge.
. 3
  pascal
#      (   ),
     .
     C ,   
  ,    ; ,
      C-,
  ,    .   
  ,      .
.   -p    ,   
(    )      
  pascal.
,       :
.sw
        pascal putnums(unt i, int j, int k)
        {
           printf("And the answers are: %d, %d  %d\n",i,j,k);
        }
. 1
 C-      
      ,  :
.sw
        pascal putnums(int i, int j, int k);
        main()
        {
                putnum(1,4,9);
        }
#   pascal      ,
, ,  printf.
        (...)
(  )   
 pascal.
. 3
  cdecl
#     pascal; 
  
  ,    
  -p    
 C-.
,        -p,
   printf,     :
.sw
        extern cdecl printf();
        putnums(int i, int j, int k);

        cdecl main()
        {
                putnums(1,4,9);
        }

        putnums(int i, int j, int k)
        {
           printf("And the answers are: %d, %d  %d\n",i,j,k);
        }
#      -p,    
    cdecl.
    include-,  , 
     cdecl.
.   (main)    
cdecl.
. 3
  interrupt
#  interrupt      
 8086/8088.
Turbo-C     interrupt  
   ,    AX, BX, CX, DX, SI, DI, ES  DS
.
 : BP, SP, SS, CS  IP    
C-     .
      interrupt.
.sw
        void interrupt myhandler()
        {
                . . .
        }
#        void.
      .
  ,  huge,   DS  
 .   huge  DS   
.
. 3
 
(K&R 10.1.2)
#  K&R    ,   ,
   .
 (  )      
.
# ANSI   Turbo-C    ,
    .
  , 
    .
     
 ,     
  .
   :
.sw
        long lmax(long v1, long v2);

        main()
        {
                int limit=32;
                char ch='A';
                long mval;

                mval=lmax(limit,ch);
        }
#     lmax;   
  limit  ch   long,  
 ,          
  lmax.
     limit  ch 
         ;
     lmax    ,   
    .
     .
#  
.sw
        f(void)
. 1
,     .
#   ,     ,
 .
     
.
func(int *, long);
.
      
.
func(int * count, long total);
#   ,  ,  func
  :
   int,  count,    total
 long. ,   , 
   ,   
  .
#       , 
  .  C-,   
  (, printf),   
  (...),

.
f(int *count, long total, ...)
#      
   ,    ,
   .
#   .
.sw
        int f();        /*    
                             int.  
                             K&R */

        int f(void);   /*   
                         int.  ,  
                          */

        int p(int,long);  /*    ;
                           int,  - long */

        int pascal q(void); /*   
                                 ; 
                          int */

        char far * s(char *source, int kind);   /* 
                           far 
                        ;    */

        int printf(char *format,...);  /*  
                          int,  
                            char
                           
                           */

        int (*fp)(int);  /*   , 
                          int  
                         int  */
#        
   ,   ,   
 :
.na
        ,
   ,     .
.na
     , 
   -    
   ,    .
#      ,
Turbo-C       
,    " ".
  , Turbo-C    ,
  .
#      (...),
Turbo-C       , 
 ( ).
    ,  
 ,     
  .
#   ,      (
 ,     - ).
      ,    
  .    
    ,    .
# :
.
int strcmp(char *s1, char *s2);   /*   */
int *strcpy();                    /*   */
int samp1(foat, int, ...);        /*   */

samp2()
 {
        char *sx, *cp;
        double z;
        long a;
        float q;

        if(strcmp(sx, cp))    /* 1.  */
          strcpy(sx, cp, 44); /* 2.    Turbo-C */
        samp1(3, a, q);       /* 3.  */
        strcpy(cp);           /* 4.    */
        samp1(2);             /* 5.    */
 }
#  1  (.   )  
strcmp        .
#  2  (strcpy)    (strcpy 
  ,    3-).    Turbo-C
        
   . , ,    ,
..       strcpy.
      .
#  3-   ,  1   samp1 
  float,  2- -  int.   
      ,  
  long   int   .
      , 
    .  , q,
    .  
  double    .
  .
#  4      strcpy, 
   .     
.      (  
      
   ), ..  strcpy   .
#  5    samp1    .
.. samp1   2 ,    .
    ,      .
.       
 , Turbo-C         ,
       ,   .
        
(include-),       
   ,     
      .
. 2
  (K&R 11)
#   -  , ,  
        
 ,     .
# Turbo-C      
,    K&R.  4  :
# ,     typedef, ,
      ,  
 . ,  ,  
  ,   .
# , ,     
 ,    .
,    - ,  
   ,   .
#        
   ,    .
      
        .
#  GOTO        ,
   . ,   ,  
  ,    .
. 2
   (R&K 12)
# Turbo-C    ,   K&R.
     - 
 ,    #.
. 2
  (K&R 12.1)
# Turbo-C    #define  #undef,
  R&K,   :
# 1.      
  #define  #undef:
#_STDC_
#_FILE_
#_LINE_
#_DATE_
#_TIME_
# 2.        ,
  ##, :
# #define VAR(i,j)     (i ## j)
#   VAR(x,6)   x6.
   ,     
(i/**/j).
# 3.     - 
 ,    ,     .
     #undef.
# 4.  #,   ,
     .  

 #< >   "< >".
,   
# #define TRACE(flag) printf(#flag "= %d\n", flag)
#    
# highval = 1024;
# TRACE(highval);
# :
# highval = 1024;
# printf("highval" "= %d\n", highval);
# 5.     , Turbo-C  
      .
. 2
  (K&R 12.2)
# Turbo-C    ,    K&R,
    :
    include-  , 
  (,    
#include "filename"),    ,  
 -I.
    #include <filenamr>,  
 ,   -I.
(,      O/Environment/Include,
 ,     -I pathname
  .
#      #include,   ,
 .    
    ,  
  . ,     
   , Turbo-C     
 . ,
# #define myinclude  "c:\tc\include\mystuff.h"
# #include myinclude
# #include "myinclude"
# 1- #include-
   C:\TC\INCLUDE\MYSTUFF.H,  
2-   MYINCLUDE.H    .
#         
  ,     #include.
   ,   
 #include-.
. 2
  (K&R 12.3)
# Turbo-C     K&R  
    . ,  ..,
   #if, #ifdef, #ifndef, #else, #elif,
#endif,      ,   
.      
    include-,    .
# Turbo-C    ANSI- defined(symbol).
  1 (true),     
(  #define)      ( 
#undef);   0 (false). , 
# #if defined(mysym)
#  
# #ifdef mysym
#      
defined   ,    #if:
# #if defined(mysym) || defined(yoursym)
# Turbo-C (   ANSI)   
 sizeof    :
.sw
     #if (sizeof(void *) ==2)
     #define SDATA
     #else
     #define LDATA
     #endif
. 2
  (K&R 12.4)
# Turbo-C   #line,   K&R.
. 2
   (ANSI C 3.8.5)
# Turbo-C   #error,   ( 
)  ANSI-.  :
# #error errmsg
#       
         ,
    #error   ,
    :
# Fatal:  filename  line#  Error directive:  errmsg
#     ,  
,         
 .
. 2
 PRAGMA (ANSI C 3.8.6)
# Turbo-C   #pragma,  ( 
#error),  
  ANSI-.     
 :
#  #pragma <directive name>
#    #pragma Turbo-C    ,
  ,    ,
  #pragma. -,  
   ,    #pragma.
. 3
 #pragma inline
# Turbo-C    #pragma. :
#  #pragma inline
#      -B.
    ,     
  .    -  
, ..     -B ,
   #pragma inline.   ,  
   -B,   #pragma inline, .. 
  ,   
asm-;       
 .
. 3
 #pragma warn
#  #pragma- - 
#pragma warn
#        
    -wxxx ( 
  ).
# ,       :
.sw
     #pragma warn +xxx
     #pragma warn -yyy
     #pragma warn .zzz
#  xxx     ( 
  O/C/Errors/   ); yyy  
;  zzz   , 
    .
#   3-   , 
   ,  
 3    Turbo-C.
. 2
  (ANSI C 3.7)
#  ,
ANSI-  Turbo-C   , 
 ,    #.    .
. 2
 -
# ANSI-  5  . Turbo-C
  5. , 
     
  (__).
.ym _LINE_
     -  .
      1.
.ym _FILE_
    -  .
.am
 
  ,   
 #include   #line,  
 #include-.
.ym _DATE_
      -  .
.am
  _DATE_      ,
  ,     .
   mmmddyyyy,  mmm -  (Jan, Feb  ..),
dd -    (1...31;  1-    dd
 ,    10), yyyy -  (1987, 1988  ..).
.ym _TIME_
      -  .
.am
  _TIME_      ,
  ,     .
   hh:mm:ss,  hh -  (00...23),
mm -  (00...59), ss -  (00...59).
.ym _STDC_
,  1,      -a, 
   ANSI- (ANSI keywords only ... ON);
   .
. 2
  Turbo-C
#  Turbo-C    .
,   ,  ANSI-,
     
  (__).
.ym _TURBOC_
    Turbo-C -  .
 1.0   0x0100;  1.2 -  0x0102  ..
.ym _PASCAL_
   -p;    ,
 1,    -p;   .
.ym _MSDOS_
 ,  1.
.ym _CDECL_
   -p;    ,
 1,   -p  ;   .
#  6      
 .       
  ;  (-)  .
,      ,  _SMALL_,
  - ;   #if defined(_SMALL_)
   true(),     #if defined(_HUGE_)
(  )    fulse().
     
 1.
.ym _TINY_
     .
.ym _SMALL_
     .
.ym _MEDIUM_
    .
.ym _COMPACT_
    .
. 1
  MICROSOFT MSC V4.0, V5.0
. 2
  K&R  MSC
. 4   K&R  MSC
---------------------------------------------------------------
                   
 K&R
---------------------------------------------------------------
2.2         31 .

2.3     asm  entry    .  
        : const, volatile, enum, signed, void.
         cdecl, far, fortran, huge, near, pascal 
        ,       .

2.4.1        
             .

2.4.3      : '\V', '\A',
        '\X',     ,  
          .
             int,  
            .

2.6      short   16 , long - 32 .
         int   8086/8088, 80186, 80286 
        16 ,   80386  68000 - 32.

4        char   ,    
        .      
         .    :
        unsigned char  unsigned long.   signed 
        unsigned      
        .    enum  void.

6.4         near, far  huge, 
             .
              .

6.6        :
        1.  float   double.
        2.        double, 
             double.
        3.  char  short   int.
        4.  unsigned char  unsigned short  
           unsigned int.
        5.        unsigned long,
              unsigned long.
        6.        long, 
             long.
        7.        unsigned int,
              unsigned int.
            
          ,   near, far  huge.

7.2        sizeof  ,  
         8 .

7.14      .

8.2        enum  void.
          signed  unsigned  
         :
        signed char
        signed short
        signed short int
        signed int
        signed long
        signed long int
        unsigned char
        unsigned short
        unsigned short int
        unsigned int
        unsigned long
        unsigned long int

8.4            
               
         .

8.5        unsigned.    
              
           ,     
              
        .

8.6         
        .

9.7       switch    int 
        .     enum. 
           case     
           switch.

10.1              
          ',...' (  )
           ', '      
          .     
         ,         
         .

12       #      
           .
          #pragma.

12.3        defined()  
          #if,     #ifdef  #ifndef  
        .
         #elif (else-if).

14.1             
            .
         ,  ->,    
             ,   
           .

17         .
. 2
 
#        
 ,       .
#   ,    '\0' 
  512 .
#       .
#    31 .
#      / - 5.
. 2
 
#    512 
#      - 8.
#    - 256 .
#       #if, #ifdef, #ifndef - 32.
#      - 10.
. 1
    Turbo-C  MSC
# Turbo-C  Microsoft C (MSC)     .
#        :
.na
       64   .
.na
    (huge)  ,    (,
)        huge (. ),
    64.
.ym  (small) 
  .      
      (  64).
,        128.
         'near',
       far  huge (. ).
.ym  (medium) 
         .
          
,          .
.ym  (compact) 
         .
           'near',
   - 'far'.       
 'far'      'near'  'huge' (. ).
.ym  (large) 
        
.            
'far'.         'near'
     'near'  'huge' (. ).
.ym  (huge) 
       .  
   .
#          (,
)  64,     :
.na
   (,  )     64.
.na
     128     ,
 2.
#     sizeof     
  int,         ,
MSC      :
      sizeof,
   :
# (long) sizeof (huge_item),
#  huge_item -  .    
  'huge'     :
# (long) (huge_ptr1 - huge_ptr2).
. 2
  tiny
# Turbo-C         
 - tiny.
    .   
( CS, DS, SS, ES)      , 
64    ,   .
    near.
,    tiny,  
   .COM.
. 2    'near', 'far'  'huge'
#         
 ,     (,   )
    ,   
    . , MSC   
     near, far  huge.
         MS DOS 
  8086,        /ZA  MSC.
. 3   near
# ,    ,    
     .   16-
     .     16 .
. 3   far
# ,    ,    ,
         .
  32-      .
    16 .
. 3
  huge
#       
   ,     .
   (,  )  
   64 .   32-  .
    32 .
#  -,    
 : ( (small)  ,  (compact),
 (medium),   (large)).(XLIBC.LIB,  X -  
  ).     
       (huge) .
     'far'   'huge'  
   .
#         
  near, far  huge    :
.na
       .
, char far* *p;  ,  p    'far' 
 char.
.na
       ,
  ,     ,  
  (near)     (far  huge).
: char far ;      
char   'far'.
.na
       ,
    : 16  (near)   32 (huge  far).
, char far *p;  p   'far'
 (32 )    char.
.
:
char a[3000]; /*  (small)  */
-      .

char far b[30000]; /*  (small)   */
- b            .
      ,  
'far',       
  .

char a[3000]; /*  (large)  */
-              
,       -
 32- .

char near b[30000]; /*  (large)   */
-   b        
16-    (near),       
,    .

char huge a[70000]; /*  (small)   */
-     ,      
64  .        huge  
 (huge)       
  ,        
   'near' .

char huge *pa; /*  (small)  */
- pa    ,  ,    
.     (, pa++)
 32 .

char *pa; /*  (small)  */
- 'near'   char;

char far *pa; /*  (small)  */
- 'far'   char;

char far* *pa; /*  (small)  */
- 'near'    'far'   char;

char far* *pa; /*  (large)  */
- 'far'    'far'   char

char far* near *pb; /*    */
- 'near'    'far'   char

char far* far *pb; /*    */
- 'far'    'far'   char
#   'near'  'far'    , 
  .
.na
       
 .
.na
       ,
  ,     ,
    (near)     (far).
: char far fun();  fun
   ,   32-  
   char;
.na
       
 ,     : 16  (near)  32 (far).
: char (far *pfun)();  pfun 
 'far'  (32 )  ,   
char.
.na
     .
.na
  'huge'     .
# :
.
char far fun();         /*  (small)  */
char far fun()  { /* ... */ }

-  fun -  ,    char,
   32- .


static char far* near fun();    /*  (large)  */
static char far* near fun() { /* ... */ }

-  fun  'near' ,  'far'
  char. ,    
     ,   .  
 'near',    .


void far fun();         /*  (small)  */
void (far* pfun)() = fun;

-  pfun  'far'   ,  
.


double far* (far fun)();  /*  (compact)  */
double far* (far *pfun)() = fun;

-  pfun  'far'   , 
'far'    double.
#   'near', 'far'  'huge'  ,  
,        
    .

.       UNIX 2.9BSD, 4.2BSD
#   -2 (UNIX 2.9BSD)  -32 (UNIX 4.2BSD) 
    CC  PCC.      ,
       .   
    K&R.   -   
""   ,  . . , 
 ,    ,   K&R.   
        LINT, 
          
     .
. 1
         -2
.na
  : /*.../*...*/...*/
.na
 : &1==0  :  & (1==0)
.na
    ++: B = (++) + (++);
.na
        -  1 
.na
  7 (8) ,   7  
.na
case -    ,   
.na
 != ,   0==null,     
.na
   ='B'      
.na
   B: F(G(),K())  =F()+G()
.na
       
.na
  &  register 
.na
'      (   )
.na
     (nuxi-)
.na
      
.na
     
.na
         
.na
  C&0377 A (unsigned)C
.na
 : A =-B  A = -B
.na
 40000    unsigned,   long
.na
  '"'   "'" 
.na
: putc('A')  putc("A")
.na
: \1 \01 \001,  : "\12345"
.na
     \<BK>,   \()<BK>
.na
char  : 0377 != '\0377'
.na
   : 'A' < ''
.na
     double,    float
.na
 !=  - : char A[5],*P; A=P; : P=A;
.na
    -  (!?): exit(0);  exit;
.na
     static
.na
   
.na
++++  ( - L=, ++ - ),  ++(++)
.na
-  unsigned  2**N-
.na
: +/-  -,  - 
.na
 & (^1) 
.na
if( A < B < C )     ,  
.na
  if'ax  : F(A,(B,C),D)
.na
       -  
.na
     : char P[];
.na
    - : A[] [20], : A[] []
.na
    ,    
.na
   union'   
.na
        
.na
: if(...)...if(...)...else...;
.na
extern   extern  
.na
static       
.na
 #define...; -  
.na
#defin'    -
.na
: #define A (...)... -  
.na
 -> ,    
.na
      &: exit;
.na
    : A+B;
.na
 : (double*)malloc(...) -    !!
.na
   : 'AB' 'ABC'...
.na
    ,  
.na
 A=B    ,   
.na
: unsigned A,B,C;   : A-C<B  A<B+C
.     XENIX
. 4   K&R     XENIX
---------------------------------------------------------------
                   
 K&R
---------------------------------------------------------------
2.2         31 .

2.3     asm  entry    .  
        : const, enum, void.
         far, fortran, huge, near, pascal 
        ,       .

2.4.1        
             .

2.4.3      : '\V', '\A',
        '\X',     ,  
          .
             int,  
            .

2.6      short   16 , long - 32 .
         int   8086/8088, 80186, 80286 
        16 ,   80386  68000 - 32.

4        char .    
           . 
          : unsigned char  unsigned long.
          enum ()  void ().

6.4         near, far  huge, 
             .
              .

6.5       unsigned   
             (int, long, short
         char).     unsigned,
          unsigned int.

6.6        :
        1.  float   double.
        2.        double, 
             double.
        3.  char  short   int.
        4.  unsigned char  unsigned short  
           unsigned int.
        5.        unsigned long,
              unsigned long.
        6.        long, 
             long.
        7.        unsigned int,
              unsigned int.
            
          ,   near, far  huge.

7.2        sizeof  ,  
         8 .

7.14      .

8.2        enum  void.
          unsigned  
         :
        unsigned char
        unsigned short
        unsigned short int
        unsigned int
        unsigned long
        unsigned long int

8.4            
               
         .

8.5        unsigned.    
              
           ,     
              
        .

8.6         
        .

9.7       switch    int 
        .     enum. 
           case     
           switch.

12       #      
           .
          #pragma.

12.3        # defined()  
          #if,     #ifdef  #ifndef  
        .
         #elif (else-if).

14.1             
            .
         ,  ->,    
             ,   
           .

17         .
#      ,    MSC.
  ,    MS-DOS,
   -dos.

.     AIX
#    AIX     UNIX SYSTEM V,
    OC UNIX 4.2BSD,   IBM
   IBM RT PC (IBM 6150).
#   AIX  4    : , FCC, VCC, SCC.
    .      .
(FCC -   ,      ;
VCC -       VRM, SCC -  
stand-alone- .
#         
   -2.    
        -2.
   ,   ,   /etc/termcap
    AIX ,    CURSES,
     -2   XENIX.
  IBM RT PC
    :
. 3      IBM RT PC
{
3
$ 8 
$ 12 
$ 20  
&
@ char
@ 8 
@  
&
@ short
@ 16 
@ 
&
@ int
@ 32 
@ 
&
@ long
@ 32 
@ 
&
@ float
@ 32 
@ 
&
@ double
@ 64 
@ 
}
#        
  K&R.   YACC  LEX 
  -2.
.     HP9000
#     -    
  HP 9000 (  
HP-C).
# 
HP-C
    :
. 3      HP9000
{
3
$ 8 
$ 12 
$ 20  
&
@ char
@ 8 
@  
&
@ short
@ 16 
@ 
&
@ int
@ 32 
@ 
&
@ long
@ 32 
@ 
&
@ float
@ 32 
@ 
&
@ double
@ 64 
@ 
}
#  char    (  -4).
 register    ,  
 HP9000   .    
,    0   .   
  .
# 
HP-C   :
. 1
   16  ( -  15 );
. 1
         
  2**19 (2  19 ) ;
. 1
     2**18 ;
. 1
    ,   2**24 ;
. 1
       255 ;
. 1
-    32767   ;
. 1
    (  )
   2**19 .
#   -v     .
      /tmp/ctm3x.
#   -  HP9000     
:
. 1
 HP9000   ;
. 1
     ,     
  (        0);
. 1
   , ..  
 HP9000    ;
. 1
     ,   
    , ..     
    .
.     
. 1
 
#  ,       
     .    
 .  - .     .
 -     , 
 /   . ,   
     ,     
 (  /etc/passwd).
#      (.. include files)   
 ,         .
   include-   ,  
     .
. 1
 
#        
  -    
 .      
    XENIX.
. 2
 
#  ,   char  C     
        
.  ,    ,  char 
8- .
. 2
 
#           
.  ,     
   .    ,
 short   ,  long.     
 . ,    short   
 int,        long  int.
# ,        ,
    - .
        .
,    (   )
    :
# #define MAXPOS ((int)(((unsigned)-1)>>1))
#  , , , :
.
        #ifdef PDP11
        #define MAXPOS 32767
        #else
        ...
        #endif

#      int   "sizeof(int)",
 2, 4  -   .
. 2
  
#          
  ,      
    .
#  CPU,   PDP-11  M68000, ,   
         .
,   8086  VAX-11,      .
,         ,
  , ,     
     .  ,  VAX-11
    8,   VAX 
   int (4- )   
 :
.
        struct s_tag {
                char c;
                int i;
        };
        printf("%d\n",sizeof(s_tag));

#        ,
 ,         ,
 ,  ,    
  ,  .
#  , ,  ,  ,
           
 .    , 
          
    . ,   
    4    ,   
:
.
        union {
                char c[4];
                long lw;
        }u;

#  sizeof        :
.
        struct s_tag st;
        ...
        write(fd,&st,sizeof(st));

#     .    
  .       
 .
# ,   sizeof   ,   
  .  ,  ,   
      ,  sizeof  
      ,    ,
        .
    ,     
 .
. 2
   
#          
,    .  , 
     ,  .
,     include- misc.h, 
   :
.sw
        /*
         *   
         *    
         */
        struct {
                char lobyte;
                char hibyte;
        };

#         
          
   ,      
.       
         :
.
        #define LOBYTE(i) (i&0xff)
        #define HIBYTE(i) ((i>>8)&0xff)

# ,         ,   int
  .
#        ,  
       :
.
        int c=0;

        read(fd,&c,1);

#  ,       ,  c
    .     
     ,   
 .
. 2
 
#       -. ,   ,
     int,         (int).
        
  (int).
#          int  , 
 .  ,      
       ,  
          .
#         16 .
. 2

#         .  lint,
 ,       
,       -.
#       
      ,  
   .      
        ,  
 .       
  :
.
        char c[4];
        long *lp;

        lp = (long*)&c[0];
        *lp = 0x12345678L;

#  lint      
. ,   ,    
  .  , ,    malloc
     ,     char.
   char*,      ,
     .     char*,
 lint  ,   
.     malloc  ,   
 ,      . Lint   ,
        
.    malloc     
  50  :
.
        extern char *malloc();
        int *ip;

        ip = (int*)malloc(50*sizeof(int));

#       lint.
#     XENIX ,     
(   ) , ,     .
,    int      .
   long     short -  . , 
, :
# sizeof(char*) == sizeof(int)
#       NULL  
  0.       , 
 - ,   .   
   NULL    :
# func((char*)NULL);
. 2
 
#  ,   ,    
 XENIX,      .  
PDP-11     64      .
 PDP-11   16-   64 
   64    .    
  ,     .
#    ,    
 ,        .
. 2
 
#        ASCII. 
       ,
       char,    
  .
#    ASCII      0  127.
 ,      7 ,   8---
   ,   char  
signed ()  unsigned ().
#   ,   XENIX()  
 /usr/include/ctype.h,     
     
 .     
         
,       . :
# if(isupper(c))
# 
# if((c>='A')&&(c<='Z')).
#     , , ,   
 ,     .
 ,       ,
      if.
. 1
  
#   -,    XENIX(a).
  PDP-11   "Ritchie". ,  11   
    .
. 2
    
#     "  "  
(char)     .
#       
   ,       
  "" ,    
  .
. 2
 
#    "<<"      
 ,    .     .
   ">>"
        .
       , 
     ( )   
( ).    ,  ,
    ,   .
#  PDP-11    .
   ,    
      ,    :
# char c;
# c = (c>>3)&0x1f;
#        
 :
# char c;
# c = c/8;
. 2
 
#      
     .  , 
  ,      
,   :
.
           
          
          

#         
    .
# ,    6 ,   
  .
#    XENIX()      
   .
. 2
 
#          
  .     
        
.
#  PDP-11      ,   
  int, char  pointer.      
   :
# register unsigned  short
     .
# . .      ,
        
.  ,  - ,  
   .
. 2
 
#       
  ()  ;
        .
       
   .   
    -   char 
 int. :
.
        char c;

        if(c==0x80)
        ...

. 0
        , ..
         0x80,   int.
#      char  int 
 :
.
        char c;

        if(c=='x')
        ...

#   , ..  ,    .
      .
,     PDP-11 "ff80":
.sw
        main()
        {
                printf("%x\n",'\200');
        }

#         .
 char  short  int.     char
  . ,    
  -128:
.sw
        char c = 128;
        printf("%d\n",c);

#   ,     int  
 .        
,    int.    
 -     ,  
 :
.sw
        char c=128;
        printf("%d\n",c&0xff);

. 2
    
#        
,      .
         .
#  XENIX(e)  include- /usr/include/varargs.h,
  ,     
     ,  :
.sw
        typed char *va_list;
        #define va_dcl int va_alist;
        #define va_start(list) list=(char*)&va_alist
        #define va_end(list)
        #define va_arg(list,mode)
                ((mode*)(list+=sizeof(mode)))[-1]

#  va_end   .  
       fprintf.
     FILE*,     char*.
         .
        (2-
).
#      fprintf    
        :
.sw
 #include <varargs.h>
 #include <stdio.h>

 int
 fprintf(va_alist)
 va_dcl
 {
        va_list ap;  /*     */
        char *format;
        FILE *fp;

        va_start(ap);  /*     */
        fp = va_arg(ap,FILE*);
        format=va_arg(ap,char*);

        ...

 }
# ,        fprintf.  
    va_dcl  int,
        .
  ap    va_start (
   ).     
  ,       
 va_arg.      ;
         
 ap.  fprintf    ,
   ,      
      va_arg(). ,
  double, int*  short   
:
.sw
        double dint;
        int *ip;
        short s;

        dint = va_arg(ap,double);
        ip = va_arg(ap,int*);
        s = va_arg(ap,short);

#       , 
        .
 ,       ,  ,
,  int (, char  short    
)     int.
. 2
 ,  
#          
    .  :
# func(i++,i++);
. 0
   ,  :
# func(i++);
. 0
 ,  func  - 
   , ..  
 i   .   XENIX(a)
    ;   
    ,    
  ,   .  
   getc(), putc(), getchar(), putchar.
#        :
# , && || ? :
# ,        
-.  ,    
,    . , 
# register int a, b, c, d;
. 0
 PDP-11,        ,
        ,
   .   , 
       ,
    , ..  
    :
.sw
        register int a;
        register int b;
        register int c;
        register int d;

. 1
   
#         
 .      
,     ,   ,
   .
#        
XENIX.    XENIX(a)   
         
   . , getpwent()    
  XENIX(a),  getenv(),    
   XENIX(e).
#  ,      ,  
   ,    ,
    - ,  
.        ,
     ,   ,
       
 XENIX(a) dfopen  dfread.
#  XENIX(a)      
      XENIX(a). ,
       .
  XENIX(a)     XENIX.
# ,    printf (printf, fprintf, sprintf, sscanf 
scanf)       XENIX(a),
      .   
         .
       ,
  ,        
/ ,    (long)
    16- .   ,
 printf,     .
. 1
 
#         
 CPU.   , ,    
         .
  ,        
 .
#       
         .
      ,  
    ,    .
 ,  ASCII     
      .
. 1
Lint
# Lint -   ,    
     ,     .
    lint    
         .
 ,      .
# Lint      
,    . ,  lint
   ,   ,   
.
. 1
   
#      :
# a0 -      . a0+1,  ..
# b0 -     ; b1   
,  ..
# ,   ,    
 ,   !
.t2 6     

        |---------------------------|
        |   CPU   |    |
        |---------|-----------------|
        |         |  a0    |   b0   |
        |---------------------------|
        |---------|--------|--------|
        | PDP-11  |  b0    |   b1   |
        |---------|--------|--------|
        | VAX-11  |  b0    |   b1   |
        |---------|--------|--------|
        | 8086    |  b0    |   b1   |
        |---------|--------|--------|
        | 286     |  b0    |   b1   |
        |---------|--------|--------|
        | M68000  |  b1    |   b0   |
        |---------|--------|--------|
        | Z8000   |  b1    |   b0   |
        |---------|--------|--------|

.t2 6     
        |--------------------------------------------|
        |   CPU   |                     |
        |---------|----------------------------------|
        |         |  a0    |   a1   |   a2   |   a3  |
        |--------------------------------------------|
        |---------|--------|--------|--------|-------|
        | PDP-11  |  b2    |   b3   |   b0   |   b1  |
        |---------|--------|--------|--------|-------|
        | VAX-11  |  b0    |   b1   |   b2   |   b3  |
        |---------|--------|--------|--------|-------|
        | 8086*   |  b0    |   b1   |   b2   |   b3  |
        |---------|--------|--------|--------|-------|
        | 8086**  |  b2    |   b3   |   b0   |   b1  |
        |---------|--------|--------|--------|-------|
        | 286     |  b0    |   b1   |   b2   |   b3  |
        |---------|--------|--------|--------|-------|
        | M68000  |  b3    |   b2   |   b1   |   b0  |
        |---------|--------|--------|--------|-------|
        | Z8000   |  b3    |   b2   |   b1   |   b0  |
        |---------|--------|--------|--------|-------|

# ,        PDP-11    
8086    (   CPU - ).
    PDP-11   Ritchie.
 8086*      , 
   XENIX System V (--).  8086**
     XENIX 3.0 (--).
 8086   dtype(C)   ,
    .
. Include -   
#     include- 
   
. 5
-------------------------------------------------------------------------------
               | MSC  | Turbo-C |  XENIX   | OC  | -2 |  OCI   | ANSI
include           | V5.0 |  V1.5   | SYSTEM V | AIX |         | VENIX  |
             |      |         |          | V1.1|         |        |
------------------|------|---------|----------|-----|---------|--------|-------
a.out.h           |      |         |    +     |  +  |         |        |
alloc.h           |      |   +     |          |     |         |        |
ar.h              |      |         |    +     |  +  |         |        |
assert.h          |  +   |   +     |    +     |  +  |         |        |   +
backup.h          |      |         |          |  +  |         |        |
bios.h            |  +   |   +     |          |     |         |        |
cfg01.h-          |      |         |          |     |         |        |
cfg04.h           |      |         |          |  +  |         |        |
conio.h           |  +   |   +     |    +*    |     |         |        |
core.h            |      |         |    +     |  +  |         |        |
ctype.h           |  +   |   +     |    +     |  +  |         |        |   +
cur01.h-          |      |         |          |     |         |        |
cur05.h           |      |         |          |  +  |         |        |
curses.h          |      |         |    +     |  +  |         |        |
dbm.h             |      |         |    +     |  +  |         |        |
dial.h            |      |         |    +     |     |         |        |
dir.h             |      |   +     |          |     |         |        |
direct.h          |  +   |         |    +*    |     |         |        |
dmpfmt.h          |      |         |          |  +  |         |        |
dos.h             |  +   |   +     |    +*    |  +  |         |        |
doserrno.h        |      |         |          |  +  |         |        |
dumprestor.h      |      |         |    +     |     |         |        |
errno.h           |  +   |   +     |    +     |  +  |         |        |
execargs.h        |      |         |    +     |  +  |         |        |
fatal.h           |      |         |          |  +  |         |        |
fcntl.h           |  +   |   +     |    +     |  +  |         |        |
filechdr.h        |      |         |          |  +  |         |        |
float.h           |  +   |   +     |          |     |         |        |
ftw.h             |      |         |    +     |  +  |         |        |
gpoff.h           |      |         |          |  +  |         |        |
graph.h           |  +   |         |          |     |         |        |
graphics.h        |      |   +     |          |     |         |        |
grp.h             |      |         |    +     |  +  |         |        |
gslerrno.h        |      |         |          |  +  |         |        |
ieeetrap.h        |      |         |          |  +  |         |        |
inu21.h           |      |         |          |  +  |         |        |
io.h              |  +   |   +     |    +*    |     |         |        |
limits.h          |  +   |   +     |          |     |         |        |
linenum.h         |      |         |          |  +  |         |        |
local.h           |      |         |          |     |         |        |   +
lockcmn.h         |      |         |    +     |     |         |        |
lprio.h           |      |         |          |  +  |         |        |
macros.h          |      |         |    +     |  +  |         |        |
malloc.h          |  +   |         |    +     |     |         |        |
math.h            |  +   |   +     |    +     |  +  |         |        |   +
mdverify.h        |      |         |          |  +  |         |        |
mem.h             |      |   +     |          |     |         |        |
memory.h          |  +   |         |    +     |  +  |         |        |
mnttab.h          |      |         |    +     |  +  |         |        |
mon.h             |      |         |    +     |  +  |         |        |
msg00.h-msg10.h   |      |         |          |  +  |         |        |
nan.h             |      |         |          |  +  |         |        |
nlist.h           |      |         |          |  +  |         |        |
process.h         |  +   |   +     |    +*    |     |         |        |
pwd.h             |      |         |    +     |  +  |         |        |
regexp.h          |      |         |    +     |  +  |         |        |
register.h        |      |         |    +*    |     |         |        |
sd.h              |      |         |    +     |     |         |        |
search.h          |  +   |   +     |    +     |  +  |         |        |
setjmp.h          |  +   |   +     |    +     |  +  |         |        |   +
sgtty.h           |      |         |    +     |     |         |        |
share.h           |  +   |   +     |    +*    |     |         |        |
signal.h          |  +   |   +     |    +     |  +  |         |        |   +
stand.h           |      |         |    +     |  +  |         |        |
spawn.h           |      |         |    +*    |     |         |        |
stdarg.h          |  +   |   +     |          |     |         |        |   +
stddef.h          |  +   |   +     |          |     |         |        |   +
stdio.h           |  +   |   +     |    +     |  +  |         |        |   +
stdlib.h          |  +   |   +     |    +*    |     |         |        |   +
string.h          |  +   |   +     |    +     |  +  |         |        |   +
sysm.h            |      |         |          |  +  |         |        |
term.h            |      |         |    +     |  +  |         |        |
termio.h          |      |         |    +     |  +  |         |        |
time.h            |  +   |   +     |    +     |  +  |         |        |   +
uinfo.h           |      |         |          |  +  |         |        |
unctrl.h          |      |         |          |  +  |         |        |
unistd.h          |      |         |    +     |  +  |         |        |
ustat.h           |      |         |    +     |  +  |         |        |
utmp.h            |      |         |    +     |  +  |         |        |
v2tov3.h          |      |         |    +*    |     |         |        |
values.h          |      |   +     |    +     |  +  |         |        |
varargs.h         |  +   |         |    +     |  +  |         |        |
vrcchar.h         |      |         |          |  +  |         |        |
vrcppr.h          |      |         |          |  +  |         |        |
vrm.h             |      |         |          |  +  |         |        |
sys/FP.h          |      |         |          |  +  |         |        |
sys/a.out.h       |      |         |    +     |     |         |        |
sys/acct.h        |      |         |    +     |  +  |         |        |
sys/asdef.h       |      |         |          |  +  |         |        |
sys/assert.h      |      |         |    +     |     |         |        |
sys/bioca.h       |      |         |          |  +  |         |        |
sys/brk.h         |      |         |    +     |     |         |        |
sys/buf.h         |      |         |    +     |  +  |         |        |
sys/callo.h       |      |         |    +     |  +  |         |        |
sys/clock.h       |      |         |          |  +  |         |        |
sys/comcrt.h      |      |         |    +     |     |         |        |
sys/conf.h        |      |         |    +     |  +  |         |        |
sys/console.h     |      |         |    +     |     |         |        |
sys/crtctl.h      |      |         |    +     |     |         |        |
sys/debug.h       |      |         |          |  +  |         |        |
sys/devinfo.h     |      |         |          |  +  |         |        |
sys/dio.h         |      |         |    +     |     |         |        |
sys/dir.h         |      |         |    +     |  +  |         |        |
sys/direache.h    |      |         |          |  +  |         |        |
sys/dump.h        |      |         |          |  +  |         |        |
sys/dynaprobe.h   |      |         |          |  +  |         |        |
sys/elog.h        |      |         |          |  +  |         |        |
sys/erec.h        |      |         |          |  +  |         |        |
sys/err.h         |      |         |          |  +  |         |        |
sys/errno.h       |      |         |    +     |  +  |         |        |
sys/fblk.h        |      |         |    +     |  +  |         |        |
sys/fd.h          |      |         |          |  +  |         |        |
sys/file.h        |      |         |    +     |  +  |         |        |
sys/filsys.h      |      |         |    +     |  +  |         |        |
sys/fpfp.h        |      |         |          |  +  |         |        |
sys/fpfpi.h       |      |         |          |  +  |         |        |
sys/fstypes       |      |         |          |  +  |         |        |
sys/hft.h         |      |         |          |  +  |         |        |
sys/hwdbus.h      |      |         |          |  +  |         |        |
sys/idd.h         |      |         |    +     |     |         |        |
sys/init.h        |      |         |          |  +  |         |        |
sys/ino.h         |      |         |    +     |  +  |         |        |
sys/inode.h       |      |         |    +     |  +  |         |        |
sys/io.h          |      |         |          |  +  |         |        |
sys/iobuf.h       |      |         |    +     |  +  |         |        |
sys/ioctl.h       |      |         |    +     |  +  |         |        |
sys/ipc.h         |      |         |    +     |  +  |         |        |
sys/kcfg.h        |      |         |          |  +  |         |        |
sys/kcs.h         |      |         |          |  +  |         |        |
sys/kio.h         |      |         |          |  +  |         |        |
sys/kmon.h        |      |         |    +     |     |         |        |
sys/kproc.h       |      |         |          |  +  |         |        |
sys/kpsb.h        |      |         |          |  +  |         |        |
sys/ksvc.h        |      |         |          |  +  |         |        |
sys/lock.h        |      |         |    +     |  +  |         |        |
sys/lockcmn.h     |      |         |    +     |     |         |        |
sys/lockf.h       |      |         |          |  +  |         |        |
sys/locking.h     |  +   |         |    +     |     |         |        |
sys/low.h         |      |         |          |  +  |         |        |
sys/lprio.h       |      |         |          |  +  |         |        |
sys/mashdep.h     |      |         |    +     |     |         |        |
sys/map.h         |      |         |    +     |  +  |         |        |
sys/mmu.h         |      |         |    +     |     |         |        |
sys/mount.h       |      |         |    +     |  +  |         |        |
sys/msg.h         |      |         |    +     |  +  |         |        |
sys/ndir.h        |      |         |    +     |     |         |        |
sys/ndp.h         |      |         |    +     |     |         |        |
sys/nfs.h         |      |         |    +     |     |         |        |
sys/opt.h         |      |         |          |  +  |         |        |
sys/param.h       |      |         |    +     |  +  |         |        |
sys/preadi.h      |      |         |    +     |     |         |        |
sys/pri.h         |      |         |          |  +  |         |        |
sys/proc.h        |      |         |    +     |  +  |         |        |
sys/proctl.h      |      |         |    +     |     |         |        |
sys/pty.h         |      |         |          |  +  |         |        |
sys/rebust.h      |      |         |          |  +  |         |        |
sys/reg.h         |      |         |    +     |  +  |         |        |
sys/relsym.h      |      |         |    +     |     |         |        |
sys/relsym86.h    |      |         |    +     |     |         |        |
sys/sd.h          |      |         |    +     |     |         |        |
sys/seg.h         |      |         |          |  +  |         |        |
sys/sem.h         |      |         |    +     |  +  |         |        |
sys/shm.h         |      |         |    +     |  +  |         |        |
sys/signal.h      |      |         |    +     |  +  |         |        |
sys/sites.h       |      |         |    +     |     |         |        |
sys/space.h       |      |         |    +     |  +  |         |        |
sys/stat.h        |  +   |   +     |    +     |  +  |         |        |
sys/sysinfo.h     |      |         |    +     |  +  |         |        |
sys/sysmacros.h   |      |         |    +     |  +  |         |        |
sys/systm.h       |      |         |    +     |  +  |         |        |
sys/tape.h        |      |         |          |  +  |         |        |
sys/termio.h      |      |         |    +     |  +  |         |        |
sys/text.h        |      |         |    +     |  +  |         |        |
sys/timeb.h       |  +   |         |    +     |     |         |        |
sys/times.h       |      |         |    +     |  +  |         |        |
sys/trace.h       |      |         |          |  +  |         |        |
sys/trap.h        |      |         |          |  +  |         |        |
sys/ttold.h       |      |         |    +     |     |         |        |
sys/tty.h         |      |         |    +     |  +  |         |        |
sys/types.h       |  +   |         |    +     |  +  |         |        |
sys/uio.h         |      |         |          |  +  |         |        |
sys/ulimit.h      |      |         |    +     |     |         |        |
sys/user.h        |      |         |    +     |  +  |         |        |
sys/utime.h       |  +   |         |    +*    |     |         |        |
sys/utsname.h     |      |         |    +     |  +  |         |        |
sys/var.h         |      |         |    +     |  +  |         |        |
sys/vrmtimer.h    |      |         |          |  +  |         |        |
.   
#       
   
. 5
-------------------------------------------------------------------------------
               | MSC  | Turbo-C |  XENIX   | OC  | -2 |  OC    | ANSI
 -| V5.0 |  V1.5   | SYSTEM V | AIX |         | VENIX  |
  |      |         |          | V1.1|         |        |
------------------|------|---------|----------|-----|---------|--------|-------
abort             |  +   |         |          |     |         |        |   +
abs               |  +   |         |          |     |         |        |   +
acces             |  +   |         |          |     |         |        |
acos              |  +   |         |          |     |         |        |   +
asctime           |  +   |         |          |     |         |        |   +
asin              |  +   |         |          |     |         |        |   +
assert            |  +   |         |          |     |         |        |   +
atan              |  +   |         |          |     |         |        |   +
atan2             |  +   |         |          |     |         |        |   +
atexit            |      |         |          |     |         |        |   +
atof              |  +   |         |          |     |         |        |   +
atoi              |  +   |         |          |     |         |        |   +
atol              |  +   |         |          |     |         |        |   +
bessel            |  +   |         |          |     |         |        |
bsearch           |  +   |         |          |     |         |        |   +
cabs              |  +   |         |          |     |         |        |
calloc            |  +   |         |          |     |         |        |   +
ceil              |  +   |         |          |     |         |        |   +
cgets             |  +   |         |          |     |         |        |
chdir             |  +   |         |          |     |         |        |
chmod             |  +   |         |          |     |         |        |
chsize            |  +   |         |          |     |         |        |
_clear87          |  +   |         |          |     |         |        |
clearerr          |  +   |         |          |     |         |        |   +
clock             |      |         |          |     |         |        |   +
close             |  +   |         |          |     |         |        |
compar            |      |         |          |     |         |        |   +
_control87        |  +   |         |          |     |         |        |
cos               |  +   |         |          |     |         |        |   +
cosh              |  +   |         |          |     |         |        |   +
cprintf           |  +   |         |          |     |         |        |
cputs             |  +   |         |          |     |         |        |
creat             |  +   |         |          |     |         |        |
cscanf            |  +   |         |          |     |         |        |
ctime             |  +   |         |          |     |         |        |   +
dieeetomsbin-     |      |         |          |     |         |        |
dmsbintoieee      |  +   |         |          |     |         |        |
difftime          |  +   |         |          |     |         |        |   +
div               |      |         |          |     |         |        |   +
dosexterr         |  +   |         |          |     |         |        |
dup               |  +   |         |          |     |         |        |
dup2              |  +   |         |          |     |         |        |
ecvt              |  +   |         |          |     |         |        |
eof               |  +   |         |          |     |         |        |
execl             |  +   |         |          |     |         |        |
execle            |  +   |         |          |     |         |        |
execlp            |  +   |         |          |     |         |        |
execlpe           |  +   |         |          |     |         |        |
execve            |  +   |         |          |     |         |        |
execvp            |  +   |         |          |     |         |        |
execvpe           |  +   |         |          |     |         |        |
_exit             |  +   |         |          |     |         |        |
exit              |  +   |         |          |     |         |        |   +
exp               |  +   |         |          |     |         |        |   +
expand            |  +   |         |          |     |         |        |
fabs              |  +   |         |          |     |         |        |   +
fclose            |  +   |         |          |     |         |        |   +
fcloseall         |  +   |         |          |     |         |        |
fcvt              |  +   |         |          |     |         |        |
fdopen            |  +   |         |          |     |         |        |
feof              |  +   |         |          |     |         |        |   +
ferror            |  +   |         |          |     |         |        |   +
fflush            |  +   |         |          |     |         |        |   +
_ffree            |  +   |         |          |     |         |        |
fgetc             |  +   |         |          |     |         |        |   +
fgetchar          |  +   |         |          |     |         |        |
fgetpos           |      |         |          |     |         |        |   +
fgets             |  +   |         |          |     |         |        |   +
fieeetomsbin -    |      |         |          |     |         |        |
fmsbintoieee      |  +   |         |          |     |         |        |
filelength        |  +   |         |          |     |         |        |
fileno            |  +   |         |          |     |         |        |
floor             |  +   |         |          |     |         |        |   +
flushall          |  +   |         |          |     |         |        |
_fmalloc          |  +   |         |          |     |         |        |
fmod              |  +   |         |          |     |         |        |   +
_fmsize           |  +   |         |          |     |         |        |
fopen             |  +   |         |          |     |         |        |   +
FP_OFF            |  +   |         |          |     |         |        |
_fpreset          |  +   |         |          |     |         |        |
fprintf           |  +   |         |          |     |         |        |   +
FP_SEG            |  +   |         |          |     |         |        |
fputc             |  +   |         |          |     |         |        |   +
fputchar          |  +   |         |          |     |         |        |
fputs             |  +   |         |          |     |         |        |   +
fread             |  +   |         |          |     |         |        |   +
free              |  +   |         |          |     |         |        |   +
_freect           |  +   |         |          |     |         |        |
frexp             |  +   |         |          |     |         |        |   +
freopen           |  +   |         |          |     |         |        |   +
fscanf            |  +   |         |          |     |         |        |   +
fseek             |  +   |         |          |     |         |        |   +
fsetpos           |      |         |          |     |         |        |   +
fstat             |  +   |         |          |     |         |        |
ftell             |  +   |         |          |     |         |        |   +
ftime             |  +   |         |          |     |         |        |
fwrite            |  +   |         |          |     |         |        |   +
gcvt              |  +   |         |          |     |         |        |
getc              |  +   |         |          |     |         |        |   +
getch             |  +   |         |          |     |         |        |
getche            |  +   |         |          |     |         |        |
getchar           |  +   |         |          |     |         |        |   +
getcwd            |  +   |         |          |     |         |        |
getenv            |  +   |         |          |     |         |        |   +
getpid            |  +   |         |          |     |         |        |
gets              |  +   |         |          |     |         |        |   +
getw              |  +   |         |          |     |         |        |
gmtime            |  +   |         |          |     |         |        |   +
halloc            |  +   |         |          |     |         |        |
hfree             |  +   |         |          |     |         |        |
hypot             |  +   |         |          |     |         |        |
inp               |  +   |         |          |     |         |        |
int86             |  +   |         |          |     |         |        |
int86x            |  +   |         |          |     |         |        |
intdos            |  +   |         |          |     |         |        |
intdosx           |  +   |         |          |     |         |        |
isalnum           |  +   |         |          |     |         |        |   +
isalpha           |  +   |         |          |     |         |        |   +
isatty            |  +   |         |          |     |         |        |
iscntrl           |  +   |         |          |     |         |        |   +
isdigit           |  +   |         |          |     |         |        |   +
isgraph           |  +   |         |          |     |         |        |   +
islower           |  +   |         |          |     |         |        |   +
isprint           |  +   |         |          |     |         |        |   +
ispunct           |  +   |         |          |     |         |        |   +
isspace           |  +   |         |          |     |         |        |   +
isupper           |  +   |         |          |     |         |        |   +
isxdigit          |  +   |         |          |     |         |        |   +
itoa              |  +   |         |          |     |         |        |
kbhit             |  +   |         |          |     |         |        |
labs              |  +   |         |          |     |         |        |   +
ldexp             |  +   |         |          |     |         |        |   +
ldiv              |      |         |          |     |         |        |   +
lfind-lsearch     |  +   |         |          |     |         |        |
localtime         |  +   |         |          |     |         |        |   +
locking           |  +   |         |          |     |         |        |
log               |  +   |         |          |     |         |        |   +
log10             |  +   |         |          |     |         |        |   +
longjmp           |  +   |         |          |     |         |        |   +
lseek             |  +   |         |          |     |         |        |
ltoa              |  +   |         |          |     |         |        |
malloc            |  +   |         |          |     |         |        |   +
matherr           |  +   |         |          |     |         |        |
_memavl           |  +   |         |          |     |         |        |
memchr            |  +   |         |          |     |         |        |   +
memcmp            |  +   |         |          |     |         |        |   +
memcpy            |  +   |         |          |     |         |        |   +
memicmp           |  +   |         |          |     |         |        |
memmove           |      |         |          |     |         |        |   +
memset            |  +   |         |          |     |         |        |   +
mkdir             |  +   |         |          |     |         |        |
mktime            |      |         |          |     |         |        |   +
mktemp            |  +   |         |          |     |         |        |
modf              |  +   |         |          |     |         |        |   +
movedata          |  +   |         |          |     |         |        |
_msize            |  +   |         |          |     |         |        |
_nfree            |  +   |         |          |     |         |        |
_nmalloc          |  +   |         |          |     |         |        |
_nmsize           |  +   |         |          |     |         |        |
offsetof          |      |         |          |     |         |        |   +
onexit            |  +   |         |          |     |         |        |
open              |  +   |         |          |     |         |        |
outp              |  +   |         |          |     |         |        |
perror            |  +   |         |          |     |         |        |   +
pow               |  +   |         |          |     |         |        |   +
printf            |  +   |         |          |     |         |        |   +
putc              |  +   |         |          |     |         |        |   +
putch             |  +   |         |          |     |         |        |
putchar           |  +   |         |          |     |         |        |   +
putenv            |  +   |         |          |     |         |        |
puts              |  +   |         |          |     |         |        |   +
putw              |  +   |         |          |     |         |        |
qsort             |  +   |         |          |     |         |        |   +
raise             |      |         |          |     |         |        |   +
rand              |  +   |         |          |     |         |        |   +
read              |  +   |         |          |     |         |        |
realloc           |  +   |         |          |     |         |        |   +
remove            |  +   |         |          |     |         |        |   +
rename            |  +   |         |          |     |         |        |   +
rewind            |  +   |         |          |     |         |        |   +
rmdir             |  +   |         |          |     |         |        |
rmtmp             |  +   |         |          |     |         |        |
sbrk              |  +   |         |          |     |         |        |
scanf             |  +   |         |          |     |         |        |   +
segread           |  +   |         |          |     |         |        |
setbuf            |  +   |         |          |     |         |        |   +
setlocale         |      |         |          |     |         |        |   +
setjmp            |  +   |         |          |     |         |        |   +
setmode           |  +   |         |          |     |         |        |
setvbuf           |  +   |         |          |     |         |        |   +
signal            |  +   |         |          |     |         |        |   +
sin               |  +   |         |          |     |         |        |   +
sinh              |  +   |         |          |     |         |        |   +
sopen             |  +   |         |          |     |         |        |
sprintf           |  +   |         |          |     |         |        |   +
spawnl-spawnvpe   |  +   |         |          |     |         |        |
sqrt              |  +   |         |          |     |         |        |   +
srand             |  +   |         |          |     |         |        |   +
sscanf            |  +   |         |          |     |         |        |   +
stackvail         |  +   |         |          |     |         |        |
stat              |  +   |         |          |     |         |        |
_status87         |  +   |         |          |     |         |        |
strcat            |  +   |         |          |     |         |        |   +
strchr            |  +   |         |          |     |         |        |   +
strcmp            |  +   |         |          |     |         |        |   +
strcmpi,stricmp   |  +   |         |          |     |         |        |
strcoll           |      |         |          |     |         |        |   +
strcpy            |  +   |         |          |     |         |        |   +
strcspn           |  +   |         |          |     |         |        |
strdup            |  +   |         |          |     |         |        |
strerror          |  +   |         |          |     |         |        |   +
strftime          |      |         |          |     |         |        |   +
strlen            |  +   |         |          |     |         |        |   +
strlwr            |  +   |         |          |     |         |        |
strncat           |  +   |         |          |     |         |        |   +
strncmp           |  +   |         |          |     |         |        |   +
strncpy           |  +   |         |          |     |         |        |   +
strnicmp          |  +   |         |          |     |         |        |
strnset           |  +   |         |          |     |         |        |
strpbrk           |  +   |         |          |     |         |        |   +
strrchr           |  +   |         |          |     |         |        |
strrev            |  +   |         |          |     |         |        |
strset            |  +   |         |          |     |         |        |
strspn            |  +   |         |          |     |         |        |   +
strstr            |  +   |         |          |     |         |        |   +
strtod            |  +   |         |          |     |         |        |   +
strtok            |  +   |         |          |     |         |        |   +
strtol            |  +   |         |          |     |         |        |   +
strtoul           |      |         |          |     |         |        |   +
strupr            |  +   |         |          |     |         |        |
swab              |  +   |         |          |     |         |        |
system            |  +   |         |          |     |         |        |   +
tan               |  +   |         |          |     |         |        |   +
tanh              |  +   |         |          |     |         |        |   +
tell              |  +   |         |          |     |         |        |
tempnam           |  +   |         |          |     |         |        |
time              |  +   |         |          |     |         |        |   +
tmpfile           |  +   |         |          |     |         |        |   +
tmpnam            |  +   |         |          |     |         |        |   +
toascii           |  +   |         |          |     |         |        |
tolower           |  +   |         |          |     |         |        |   +
toupper           |  +   |         |          |     |         |        |   +
tzset             |  +   |         |          |     |         |        |
ultoa             |  +   |         |          |     |         |        |
umask             |  +   |         |          |     |         |        |
ungetc            |  +   |         |          |     |         |        |   +
unlink            |  +   |         |          |     |         |        |
utime             |  +   |         |          |     |         |        |
va_start          |  +   |         |          |     |         |        |   +
va_arg            |  +   |         |          |     |         |        |   +
va_end            |  +   |         |          |     |         |        |   +
vfprintf          |  +   |         |          |     |         |        |   +
vprintf           |  +   |         |          |     |         |        |   +
vsprintf          |  +   |         |          |     |         |        |   +
write             |  +   |         |          |     |         |        |