.CH "Features of Georgia Tech C" .MH "Standard Implemented" The Georgia Tech C compiler is based on the specifications contained in [ul The C Programming Language] by Brian W.[bl]Kernighan and Dennis M.[bl]Ritchie, Prentice-Hall, 1978. .# .MH "Additional Features" The Georgia Tech C compiler provides the following extensions to C: .#[set 50 0] .in +4 .ti -4 [num +50].[bl 2]Unions may be initialized. The first type entry in the union will be used to determine the format of the data. For example, "union {int a; double b;} x = 1;" would initialize "x" as an int, not a double. .ti -4 [num +50].[bl 2]Except for external names, all characters in all names are significant. External names are up to 8 characters in length, with no case significance. To allow access to Primos system calls, the dollar sign ("$") is also a legal character in identifiers. The external names in the object code produced by the compiler can be up to 32 characters long; it is the SEG loader that restricts their lengths to 8 characters. The 'bind' EPF loader [ul does] pay attention to the full 32 character names. .ti -4 [num +50].[bl 2]The late Unix Version 7 enhancements, structure assignment and "enum" types, are implemented (but not thoroughly tested). .ti -4 [num +50].[bl 2]C functions can call Fortran, PL/1, etc. routines, and vice versa. C uses the same calling sequence as all other Prime supported languages. SHORTCALL procedure calls (using the JSXB instruction) are not supported by Georgia Tech C. .ti -4 [num +50].[bl 2]The Ratfor/Algol68 radix notation may be used to specify integer constants. In addition to using a leading 0 for specifying octal and 0x for hexadecimal, Georgia Tech C recognizes the Ratfor radix syntax for integer constants up to base 36. (For instance, "7r123" is 123 base 7, i.e. 66.) .ti -4 [num +50].[bl 2]Single quotes may be used to specify packed character strings as in Fortran. The Georgia Tech C compiler treats a single character enclosed in apostrophes as a character constant, while more than one character enclosed in apostrophes is considered a pointer to an array of integers containing a packed "hollerith" character constant. .ti -4 [num +50].[bl 2]The data type "long unsigned" is supported, giving access to 32-bit unsigned numbers. .ti -4 [num +50].[bl 2]Initialization of automatic aggregates is supported. (The code generator is not particularly smart about it, though, so initializing huge automatic arrays is incredibly space-inefficient.) .ti -4 [num +50].[bl 2]Macro definitions ("#define"s) can be specified on the command line using the "-D" compiler option. .ti -4 [num +50].[bl]Directories to be searched for include files may be specified on the command line using the "-I" compiler option. .ti -4 [num +50].[bl]The special macros "__FILE__" and "__LINE__" are supported to provide access to the source file name and source line number (as a string constant and an integer constant), respectively. .in -4