Annotation of lucent/sys/man/1/2c, revision 1.1.1.1

1.1       root        1: .TH 2C 1 
                      2: .SH NAME
                      3: 2c, 6c, 8c, kc, vc, xc \- C compilers
                      4: .SH SYNOPSIS
                      5: .B 2c
                      6: [
                      7: .I option ...
                      8: ]
                      9: [
                     10: .I file ...
                     11: ]
                     12: .br
                     13: .B 6c
                     14: [
                     15: .I option ...
                     16: ]
                     17: [
                     18: .I file ...
                     19: ]
                     20: .br
                     21: .B 8c
                     22: [
                     23: .I option ...
                     24: ]
                     25: [
                     26: .I file ...
                     27: ]
                     28: .br
                     29: .B kc
                     30: [
                     31: .I option ...
                     32: ]
                     33: [
                     34: .I file ...
                     35: ]
                     36: .br
                     37: .B vc
                     38: [
                     39: .I option ...
                     40: ]
                     41: [
                     42: .I file ...
                     43: ]
                     44: .br
                     45: .B xc
                     46: [
                     47: .I option ...
                     48: ]
                     49: [
                     50: .I file ...
                     51: ]
                     52: .SH DESCRIPTION
                     53: .IR 2c ,
                     54: .IR 6c ,
                     55: .IR 8c ,
                     56: .IR kc ,
                     57: .IR vc ,
                     58: and
                     59: .IR xc
                     60: compile the named C
                     61: .I files
                     62: into MC68020, i960, i386, SPARC, MIPS, and ATT3210 object files.
                     63: The compilers handle most preprocessing directives themselves; a complete
                     64: preprocessor is available in
                     65: .IR cpp (1),
                     66: which must be run separately.
                     67: .PP
                     68: Let the first letter of the compiler name be
                     69: .IR O =
                     70: .BR 2 ,
                     71: .BR 6 ,
                     72: .BR 8 ,
                     73: .BR k ,
                     74: .BR v ,
                     75: or
                     76: .BR x .
                     77: The output object files end in
                     78: .RI . O .
                     79: The letter is also the prefix of related programs:
                     80: .IB O a
                     81: is the assembler,
                     82: .IB O l
                     83: is the loader.
                     84: Associated with each compiler is a string
                     85: .IR objtype =
                     86: .BR 68020 ,
                     87: .BR 960 ,
                     88: .BR 386 ,
                     89: .BR sparc ,
                     90: .BR  mips,
                     91: or
                     92: .BR 3210 .
                     93: Plan 9 conventionally sets the
                     94: .B $objtype
                     95: environment variable to the
                     96: .I objtype
                     97: string appropriate to the current machine's type.
                     98: Plan 9 also conventionally has
                     99: .RI / objtype
                    100: directories, which contain among other things:
                    101: .BR include ,
                    102: for machine-dependent include files;
                    103: .BR lib ,
                    104: for public object code libraries;
                    105: .BR bin ,
                    106: for public programs;
                    107: and
                    108: .BR mkfile ,
                    109: for preconditioning
                    110: .IR mk (1).
                    111: .PP
                    112: The compiler options are:
                    113: .TP 1i
                    114: .BI -o " obj"
                    115: Place output in file
                    116: .I obj
                    117: (allowed only if there is just one input file).
                    118: Default is to take the last element of the input file name,
                    119: strip any trailing
                    120: .BR .c ,
                    121: and append
                    122: .RI . O .
                    123: .TP
                    124: .B -w
                    125: Print warning messages about unused variables, etc.
                    126: .TP
                    127: .B -B
                    128: Accept functions without a new-style
                    129: ANSI C function prototype.
                    130: By default, the compilers reject functions
                    131: used without a defined prototype,
                    132: although ANSI C permits them.
                    133: .TP
                    134: .BI -D\*S name=def
                    135: .br
                    136: .ns
                    137: .TP
                    138: .BI -D \*Sname
                    139: Define the
                    140: .I name
                    141: to the preprocessor,
                    142: as if by
                    143: .LR #define .
                    144: If no definition is given, the name is defined as
                    145: .LR 1 .
                    146: .TP
                    147: .BI -I \*Sdir
                    148: An
                    149: .L #include
                    150: file whose name does not begin with 
                    151: slash
                    152: or is enclosed in double quotes
                    153: is always
                    154: sought first in the directory 
                    155: of the
                    156: .I file
                    157: argument.  If this fails, or the name is enclosed in
                    158: .BR <> ,
                    159: it is then sought
                    160: in directories named in 
                    161: .B -I
                    162: options,
                    163: then in
                    164: .BR /sys/include ,
                    165: and finally in
                    166: .BR /$objtype/include .
                    167: .TP
                    168: .B -N
                    169: Suppress automatic registerization and optimization.
                    170: .TP
                    171: .B -S
                    172: Print an assembly language version of the object code
                    173: on standard output as well as generating the
                    174: .RI . O
                    175: file.
                    176: .TP
                    177: .B -a
                    178: Instead of compiling, print on standard output acid functions (see
                    179: .IR acid (1))
                    180: for examining structures declared in the source files.
                    181: .TP
                    182: .B -aa
                    183: Like
                    184: .B -a
                    185: except suppress information about structures
                    186: declared in included header files.
                    187: .PP
                    188: The compilers support several extensions to ANSI C:
                    189: .TP
                    190: \-
                    191: A structure or union may contain unnamed substructures and subunions.
                    192: The fields of the substructures or
                    193: subunions can then be used as if they were members of the parent
                    194: structure or union (the resolution of a name conflict is unspecified).
                    195: When a pointer to the outer structure or union is used in a context
                    196: that is only legal for the unnamed substructure, the compiler promotes
                    197: the type and adjusts the pointer value to point at the substructure.
                    198: If the unnamed structure or union is of a type with a tag name specified by a
                    199: .B typedef
                    200: statement, 
                    201: the unnamed structure or union can be explicitly referenced
                    202: by <struct variable>.<tagname>.
                    203: .TP
                    204: \-
                    205: A structure value can be formed with an expression such as
                    206: .EX
                    207:     (struct S){v1, v2, v3}
                    208: .EE
                    209: where the list elements are values for the fields of struct
                    210: .BR S .
                    211: .TP
                    212: \-
                    213: Array initializers can specify the indices of the array in square
                    214: brackets, as
                    215: .EX
                    216:     int a[] = { [3] 1, [10] 5 };
                    217: .EE
                    218: which initializes the third and tenth elements of the eleven-element array
                    219: .BR a .
                    220: .TP
                    221: \-
                    222: Structure initializers can specify the structure element by using the name
                    223: following a period, as
                    224: .EX
                    225:     int struct { int x; int y; } s = { .y 1, .x 5 };
                    226: .EE
                    227: which initializes elements
                    228: .B y
                    229: and then
                    230: .B x
                    231: of the structure
                    232: .BR s .
                    233: .TP
                    234: \-
                    235: A global variable can be dedicated to a register
                    236: by declaring it
                    237: .B "extern register"
                    238: in
                    239: .I all
                    240: modules and libraries.
                    241: .TP
                    242: \-
                    243: A
                    244: .B #pragma
                    245: of the form
                    246: .EX
                    247:     #pragma lib "libbio.a"
                    248: .EE
                    249: records that the program needs to be loaded with file
                    250: .BR /$objtype/lib/libbio.a ;
                    251: such lines, typically placed in library header files, obviate the
                    252: .B -l
                    253: option of the loaders.  To help identify files in non-standard directories,
                    254: within the file names in the
                    255: .B #pragmas
                    256: the string
                    257: .B $M
                    258: represents the name of the architecture
                    259: (e.g.,
                    260: .BR mips )
                    261: and
                    262: .B $O
                    263: represents its identifying character
                    264: (e.g.,
                    265: .BR v ).
                    266: .TP
                    267: \-
                    268: The C++ comment
                    269: .RB ( //
                    270: to end of line)
                    271: is accepted as well as the normal
                    272: convention of
                    273: .B /*
                    274: .BR */ .
                    275: .TP
                    276: \-
                    277: The compilers accept
                    278: .B long
                    279: .B long
                    280: variables as a 64-bit type.
                    281: The standard header typedefs this to
                    282: .BR vlong .
                    283: The
                    284: .B  vlong
                    285: runtime is slow.
                    286: .SH EXAMPLE
                    287: For the 68020, produce a program
                    288: .B prog
                    289: from C files
                    290: .BR main.c
                    291: and
                    292: .BR sub.c :
                    293: .IP
                    294: .EX
                    295: 2c -w main.c sub.c
                    296: 2l -o prog main.2 sub.2
                    297: .EE
                    298: .SH FILES
                    299: .TF /$objtype/include
                    300: .TP
                    301: .B /sys/include
                    302: system area for machine-independent
                    303: .B #include
                    304: directives.
                    305: .TP
                    306: .B /$objtype/include
                    307: system area for machine-dependent
                    308: .B #include
                    309: directives.
                    310: .SH SOURCE
                    311: .TF /sys/src/cmd/2c,\ etc.
                    312: .TP
                    313: .B /sys/src/cmd/cc
                    314: machine-independent part
                    315: .TP
                    316: .BR /sys/src/cmd/2c ,\ etc.
                    317: machine-dependent part
                    318: .SH "SEE ALSO"
                    319: .IR 2a (1),
                    320: .IR 2l (1),
                    321: .IR cpp (1),
                    322: .IR mk (1),
                    323: .IR nm (1),
                    324: .IR pcc (1),
                    325: .IR db (1),
                    326: .IR acid (1),
                    327: .PP
                    328: Rob Pike,
                    329: ``How to Use the Plan 9 C Compiler''
                    330: .SH BUGS
                    331: The i960 compiler has been used only to program one I/O controller
                    332: and is certainly buggy.
                    333: .PP
                    334: The preprocessor only handles
                    335: .LR #define ,
                    336: .LR #include ,
                    337: .LR #undef ,
                    338: .LR #ifdef ,
                    339: .LR #line ,
                    340: and
                    341: .LR #ifndef .
                    342: For a full ANSI preprocessor, use
                    343: .IR cpp (1)
                    344: on the files first.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.