[an error occurred while processing this directive]

HP OpenVMS Systems

C Programming Language
Content starts here dec_c_help.HLP

Command_Parameters

file-spec,... One or more HP C source files separated by plus signs or commas. If plus signs are used, the input files are concatenated into a single object file. If commas are used, each file is compiled separately to create separate object files. If no input file extension is specified, HP C assumes the .C default file extension. library-file-spec A text library containing #include modules referenced in one or more of the source files. A library file specification must be concatenated with a file specification with a plus sign and qualified using the /LIBRARY qualifier. If the input file extension is not specified, HP C assumes the .TLB default file extension.

Qualifiers

Indicate special actions to be performed by the compiler or special input file properties. Compiler qualifiers can apply to either the CC command or to the specification of the file being compiled. When a qualifier follows the CC command, it applies to all the files listed. When a qualifier follows the file specification, it applies only to the file immediately preceding it. The following list shows all the qualifiers available with the CC command: o /ACCEPT(option[,...]) o /[NO]ANALYSIS_DATA[=file-spec] o /[NO]ANNOTATIONS[=(option,...)] o /[NO]ANSI_ALIAS o /ARCHITECTURE=option o /ASSUME=(option[,...]) o /[NO]CHECK[=(option[,...])] o /COMMENTS={AS_IS | SPACE} o /[NO]CROSS_REFERENCE o /[NO]DEBUG[=(option[,...])] o /DECC o /[NO]DEFINE=(identifier[=definition][,...]) o /[NO]DIAGNOSTICS[=file-spec] o /ENDIAN=option o /ERROR_LIMIT[=number] o /EXTERN_MODEL=option o /[NO]FIRST_INCLUDE=(file[,...]) o /FLOAT=option o /GRANULARITY o /IEEE_MODE=option o /[NO]INCLUDE_DIRECTORY=(pathname[,...]) o /L_DOUBLE_SIZE=option o /LIBRARY o /[NO]LINE_DIRECTIVES o /[NO]LIST[=file-spec] o /[NO]MACHINE_CODE o /[NO]MEMBER_ALIGNMENT o /[NO]MMS_DEPENDENCIES[=(option[,option])] o /NAMES=(option1,option2) o /NESTED_INCLUDE_DIRECTORY[=option] o /[NO]OBJECT[=file-spec] o /[NO]OPTIMIZE[=option] o /PDSC_MASK=option o /[NO]PLUS_LIST_OPTIMIZE o /[NO]POINTER_SIZE=option o /PRECISION={SINGLE | DOUBLE} o /[NO]PREFIX_LIBRARY_ENTRIES o /[NO]PREPROCESS_ONLY[=filename] o /[NO]PROTOTYPE[=(option[,...])] o /PSECT_MODEL=[NO]MULTILANGUAGE o /REENTRANCY=option o /REPOSITORY=option o /ROUNDING_MODE=option o /[NO]SHARE_GLOBALS o /SHOW[=(option[,...])] o /[NO]STANDARD=(option) o /[NO]TIE o /[NO]UNDEFINE=(identifier[,...]) o /[NO]UNSIGNED_CHAR o /[NO]VERSION o /[NO]WARNINGS[=(option[,...])]

/ACCEPT

/ACCEPT=(option[,option]) Allows the compiler to accept C language syntax that it might not normally accept. HP C accepts slightly different syntax depending upon the compilation mode specified with the /STANDARD qualifier. The /ACCEPT qualifier can fine tune the language syntax accepted by each /STANDARD mode. Specify one of the following qualifier options: [NO]C99_KEYWORDS Controls whether or not the C99 Standard keywords inline and restrict (which are are in the C89 namespace for user identifiers) are accepted without double leading underscores. The spelling with two leading underscores (__inline, __restrict) is in the namespace reserved to the compiler implementation and is always recognized as a keyword regardless of this option. In /STANDARD=RELAXED mode, the default is C99_KEYWORDS. In all other compiler modes, the default is NOC99_KEYWORDS. [NO]GCCINLINE The gcc compiler implements an inline function qualifier for functions with external linkage that gives similar capabilites as the C9x extern inline feature for functions, but the usage details are somewhat different: the combination of extern and inline keywords makes an inline definition, instead of the exlusive use of the inline keyword without the extern keyword. This option controls which variation of the feature is implemented. In all compiler modes, the default is NOGCCINLINE. [NO]TRIGRAPHS Turns trigraph support on or off. In COMMON and VAXC compiler modes, trigraphs are disabled by default. In all other modes, they are enabled by default. [NO]VAXC_KEYWORDS Controls whether or not the compiler recognizes the VAX C keywords (such as "readonly") regardless of the /STANDARD mode used. [NO]RESTRICT_KEYWORD Controls whether or not the compiler recognizes the C9x standard restrict keyword regardless of the /STANDARD mode used. This only affects recognition of the spelling of the keyword as proposed for inclusion in the C9x standard. The spelling with two leading underscores, __restrict, is in the namespace reserved to the compiler implementation, and it is always recognized as a keyword regardless of this option. Note that [NO]RESTRICT_KEYWORD is a subset of [NO]C99_KEYWORDS. They have the same compiler-mode defaults. The default values are based upon the settings of the /STANDARD qualifier: For /STANDARD=RELAXED the default is: /ACCEPT=(VAXC_KEYWORDS,C99_KEYWORDS,NOGCCINLINE,TRIGRAPHS) For /STANDARD=VAXC, the default is: /ACCEPT=(VAXC_KEYWORDS,NOC99_KEYWORDS,NOGCCINLINE,NOTRIGRAPHS) For /STANDARD=COMMON, the default is: /ACCEPT=(NOVAXC_KEYWORDS,NOC99_KEYWORDS,NOGCCINLINE,NOTRIGRAPHS) For /STANDARD=C99 or /STANDARD=LATEST, the default is: /ACCEPT=(NOVAXC_KEYWORDS,C99_KEYWORDS,NOGCCINLINE,TRIGRAPHS) In all other modes, the default is: /ACCEPT=(NOVAXC_KEYWORDS,NOC99_KEYWORDS,NOGCCINLINE,TRIGRAPHS)

/ANALYSIS_DATA

/ANALYSIS_DATA[=file-spec] /NOANALYSIS_DATA (D) Controls whether the compiler generates a file of source code analysis information. The default file name is the file name of the primary source file; the default file type is .ANA.

/ANNOTATIONS

/ANNOTATIONS[=(option,...)] /NOANNOTATIONS (D) Controls whether or not the source listing file is annotated with indications of specific optimizations performed or, in some cases, not performed. These annotations can be helpful in understanding the optimization process. Select one or more of the following /ANNOTATIONS qualifier options: ALL Selects all annotations. This output can be quite verbose because it includes detailed output for all annotations. For more concise output for each kind of annotation, use /ANNOTATIONS=(ALL,NODETAIL), or just /ANNOTATIONS with no qualifier options. [NO]CODE Annotates the machine-code listing with descriptions of special instructions used for prefetching, alignment, and so on. The /MACHINE_CODE qualifier must also be specified for /ANNOTATION=CODE to have any visible effect. [NO]DETAIL Provides additional level of annotation detail, where available. [NO]FEEDBACK Indicates use of profile-directed feedback optimizations. Feedback optimizations are not implemented on OpenVMS systems, so this keyword has no visible effect. [NO]INLINING Indicates where code for a called procedure was expanded inline. [NO]LOOP_TRANSFORMS Indicates optimizations such as loop reordering and code hoisting. [NO]LOOP_UNROLLING Indicates where advanced loop nest optimizations have been applied to improve cache performance (unroll and jam, loop fusion, loop interchange, and so on). [NO]PREFETCHING Indicates where special instructions were used to reduce memory latency. [NO]SHRINKWRAPPING Indicates removal of code establishing routine context when it is not needed. [NO]SOFTWARE_PIPELINING Indicates where loops have been scheduled to hide functional unit latency. [NO]TAIL_CALLS Indicates an optimization where a call from routine A to B can be replaced by a jump. [NO]TAIL_RECURSION Indicates an optimization that eliminates unnecessary routine context for a recursive call. NONE Same as /NOANNOTATIONS. The default is /NOANNOTATIONS. Specifying /ANNOTATIONS with no keywords is the same as specifying /ANNOTATIONS=(ALL,NODETAIL).

/ANSI_ALIAS

/ANSI_ALIAS /NOANSI_ALIAS (D) Directs the compiler to assume the ANSI C aliasing rules, thus giving it the freedom to generate better optimized code. The aliasing rules are explained in Section 3.3, paragraphs 20 and 25 of the ANSI C Standard. The default is /NOANSI_ALIAS for the /STANDARD=VAXC and /STANDARD=COMMON compiler modes. The default is /ANSI_ALIAS for all other modes.

/ARCHITECTURE

/ARCHITECTURE=options /ARCHITECTURE=GENERIC (D) Determines the Alpha processor instruction set to be used by the compiler. The /ARCHITECTURE qualifier uses the same keyword options (keywords) as the /OPTIMIZE=TUNE qualifier. Where the /OPTIMIZE=TUNE qualifier is primarily used by certain higher-level optimizations for instruction scheduling purposes, the /ARCHITECTURE qualifier determines the type of code instructions generated for the program unit being compiled. OpenVMS Version 7.1 and subsequent releases provide an operating system kernel that includes an instruction emulator. This emulator allows new instructions, not implemented on the host processor chip, to execute and produce correct results. Applications using emulated instructions will run correctly, but may incur significant software emulation overhead at runtime. All Alpha processors implement a core set of instructions. Certain Alpha processor versions include additional instruction extensions. The following /ARCHITECTURE options are supported: GENERIC Generates code that is appropriate for all Alpha processor generations. This is the default. Running programs compiled with the GENERIC option will run all implementations of the Alpha architecture without any instruction-emulation overhead. HOST Generates code for the processor generation in use on the system being used for compilation. Running programs compiled with this option on other implementations of the Alpha architecture may encounter instruction-emulation overhead. EV4 Generates code for the 21064, 21064A, 21066, and 21068 implementations of the Alpha architecture. Running programs compiled with the EV4 option will run without instruction-emulation overhead on all Alpha processors. EV5 Generates code for some 21164 chip implementations of the Alpha architecture that use only the base set of Alpha instructions (no extensions). Running programs compiled with the EV5 option will run without instruction-emulation overhead on all Alpha processors. EV56 Generates code for some 21164 chip implementations that use the byte and word-manipulation instruction extensions of the Alpha architecture. Running programs compiled with the EV56 option might incur emulation overhead on EV4 and EV5 processors, but will still run correctly on OpenVMS Version 7.1 (or later) systems. PCA56 Generates code for the 21164PC chip implementation that uses the byte- and word-manipulation instruction extensions and multimedia instruction extensions of the Alpha architecture. Running programs compiled with the PCA56 option might incur emulation overhead on EV4, EV5, and EV56 processors, but will still run correctly on OpenVMS Version 7.1 (or later) systems. EV6 Generates code for the 21264 implementation of the Alpha architecture. EV67 Generates code for the second-generation 21264 implementation of the Alpha architecture.

/ASSUME

/ASSUME=(option[,...]) Controls compiler assumptions. You may select the following options: [NO]ACCURACY_SENSITIVE Specifies whether certain code transformations that affect floating-point operations are allowed. These changes may or may not affect the accuracy of the program's results. If you specify NOACCURACY_SENSITIVE, the compiler is free to reorder floating-point operations, based on algebraic identities (inverses, associativity, and distribution). This allows the compiler to move divide operations outside of loops, improving performance. The default, ACCURACY_SENSITIVE, directs the compiler to use only certain scalar rules for calculations. This setting can prevent some optimization. [NO]ALIGNED_OBJECTS Controls an optimization for dereferencing pointers. On OpenVMS Alpha systems, dereferencing a pointer to a longword- or quadword-aligned object is more efficient than dereferencing a pointer to a byte- or word-aligned object. Therefore, the compiler can generate more optimized code if it makes the assumption that a pointer object of an aligned pointer type does point to an aligned object. Since the compiler determines the alignment of the dereferenced object from the type of the pointer, and the program is allowed to compute a pointer that references an unaligned object (even though the pointer type indicates that it references an aligned object), the compiler must assume that the dereferenced object's alignment matches or exceeds the alignment indicated by the pointer type. The default, /ASSUME=ALIGNED_OBJECTS, allows the compiler to make such an assumption. With this assumption made, the compiler can generate more efficient code for pointer dereferences of aligned pointer types. To prevent the compiler from assuming the pointer type's alignment for objects that it points to, use the /ASSUME=NOALIGNED_OBJECTS qualifier. [NO]CLEAN_PARAMETERS Controls compiler assumptions about short-integer formal parameters. The Alpha Calling Standard requires integers less than 64 bits long that are passed by value to have their upper bits either zeroed or sign-extended to make full 64-bit values. These are referred to as clean parameters. Some old code does not follow this convention. This can cause problems if the called program assumes that the caller followed the Calling Standard by passing only clean parameters. Specifying /ASSUME=NOCLEAN_PARAMETERS allows a program to be called by old code that might pass unclean integer parameters. It directs the compiler to generate run-time code to clean the short integers so they comply with the Calling Standard. The default is /ASSUME=CLEAN_PARAMETERS. [NO]EXACT_CDD_OFFSETS Controls the alignment of Control Data Dictionary records. If /ASSUME=EXACT_CDD_OFFSETS is specified, the records input from the CDD are given the exact alignment (relative to the start of the record) specified by the CDD definition. This alignment is independent of the current compiler member-alignment setting. If /ASSUME=NOEXACT_CDD_OFFSETS is specified, the compiler may modify the offsets specified in a CDD record according to the current member-alignment setting. The default is /ASSUME=NOEXACT_CDD_OFFSETS. [NO]HEADER_TYPE_DEFAULT Specifies whether the default file-type mechanism (.h) for header files is enabled (HEADER_TYPE_DEFAULT) or disabled (NOHEADER_TYPE_DEFAULT). The default is /ASSUME=HEADER_TYPE_DEFAULT. [NO]MATH_ERRNO Controls whether or not intrinsic code is generated for math functions that set the errno variable. The default is /ASSUME=MATH_ERRNO, which does not allow intrinsic code for such math functions to be generated, even if /OPTIMIZE=INTRINSICS is in effect. Their prototypes and call formats, however, are still checked. [NO]POINTERS_TO_GLOBALS Controls whether or not the compiler can safely assume that global variables have not had their addresses taken in code that is not visible to the current compilation. The default, /ASSUME=POINTERS_TO_GLOBALS, assumes that global variables have had their addresses taken in separately compiled modules and that, in general, any pointer dereference could be accessing the same memory as any global variable. This is often a significant barrier to optimization. The /ANSI_ALIAS qualifier allows some resolution based on data type, but /ASSUME=NOPOINTER_TO_GLOBALS provides significant additional resolution and improved optimization in many cases. [NO]WEAK_VOLATILE Affects the generation of code for assignments to objects that are less than or equal to 16 bits in size (for example: char, short) that have been declared as volatile. Specifying /ASSUME=WEAK_VOLATILE directs the compiler to generate code for volatile assignments to single bytes or words without using the load-locked store-conditional sequences that, in general, are required to assure volatile data integrity when direct byte or word memory-access instructions are not being used. This option is intended for use in special I/O hardware access situations, and should not generally be used. The default is /ASSUME=NOWEAK_VOLATILE, which uses interlocked instructions for sub-longword volatile accesses when byte or word instructions are not enabled. [NO]WHOLE_PROGRAM Asserts to the compiler that except for "well-behaved library routines," the whole program consists only of the single object module being produced by this compilation. The optimizations enabled by /ASSUME=WHOLE_PROGRAM include all those enabled by /ASSUME=NOPOINTER_TO_GLOBALS, and possibly additional optimizations as well. The default is /ASSUME=NOWHOLE_PROGRAM. [NO]WRITABLE_STRING_LITERALS Stores string constants in a writable psect. Otherwise, such constants will be placed in non-writable psect. For /STANDARD=VAXC or /STANDARD=COMMON, the default is /ASSUME=WRITABLE_STRING_LITERALS. For all other compiler modes, the default is /ASSUME=NOWRITABLE_STRING_LITERALS.

/CHECK

/CHECK[=ALL|NONE|([NO]UNINITIALIZED_VARIABLES, [NO]BOUNDS, [NO]POINTER_SIZE[=(option,...)])] /NOCHECK (D) This qualifier is for use only as a debugging aid. It should not be used to build production code without carefully assessing its performance impact on the application in question for each platform on which the application runs. For example, the I64-only FP_MODE check can add significant overhead to every function in the compilation, even if the application uses little or no floating point. /CHECK=NONE is equivalent to /NOCHECK. /CHECK=ALL is equivalent to /CHECK=(UNINITIALIZED_VARIABLES,BOUNDS,POINTER_SIZE=ALL). /CHECK=UNINITIALIZED_VARIABLES initializes all automatic variables to the value 0x7ff580057ff58005. This value is a double signaling NaN and, if used as a floating-point value in certain double operations, causes a floating-point trap if traps are enabled. Traps are not enabled if the program is compiled /FLOAT=IEEE and the /IEEE value is something other than FAST. On I64 systems: o Traps are not caused when values are converted to an integer type. o The float type does not trap. /CHECK=BOUNDS enables run-time checking of array bounds. Array-bounds processing is performed in the following way: o Checks are done only when accessing an array. o Checks are not done when accessing a pointer, even if that access is done using the subscript operator. This means that checks are not done on arrays declared as formal parameters because they are considered pointers in the C language. If a formal parameter is a multi-dimension array, all bounds except the first are checked. o If an array is accessed using the subscript operator (as either the left or right operand), and the subscript operator is not the operand of an address-of operator, the check is for the index to be between 0 and the number of array elements minus one, inclusive. o If an array is accessed using the subscript operator (as either the left or right operand), and the subscript operator is the operand of the address-of operator, the check is for the index to be between 0 and the number of elements in the array, inclusive. The reason for treating the address-of case differently is that it is common programming practice to have a loop such as: int a[10]; int *b; for (b = a ; b < &a[10] ; b++) { .... } In this case, access to &a[10] is allowed even though it is outside the range of the array. o If the array is being accessed using pointer addition, the check is for the value being added to be between 0 and the number of elements in the array, inclusive. o If the array is being accessed using pointer subtraction (that is, the subraction of an integer value from a pointer, not the subtraction of one pointer from another), the check is for the value being subtracted to be between the negation of the number of elements in the array and 0, inclusive. o In the previous three cases, an optional compile-time message (ident SUBSCRBOUNDS2) can be enabled to detect the case where an array has been accessed using either a constant subscript or constant pointer arithmetic, and the element accessed is exactly one past the end of the array. o Bounds checking is not done for arrays declared with one element. (Because ANSI C does not allow arrays without dimensions inside structs, it is common practice to declare such arrays with a bounds specifier of 1.) In this case, an optional compile-time message (ident SUBSCRBOUNDS1) can be enabled to detect the case where an array declared with a single element is accessed using either a constant subscript or constant pointer arithmetic, and the element accessed is not part of the array. o HP C emits run-time checks for arrays indexed by constants, even though the compiler can and does detect this situation at compile-time. An exeption is that no run-time check is made if the compiler can determine that the access is valid. o If a multi-dimension array is accessed, the compiler performs checks on each of the subscript expressions, making sure each is within the corresponding bound. So for the following code, the compiler checks that both x and y are between 0 and 9. It does not check that 10 * x + y is between 0 and 99: int a[10][10]; int x,y,z; x = a[x][y]; /CHECK=POINTER_SIZE directs the compiler to check 32-bit pointer values to make sure they will fit in a 32-bit pointer. If such a value cannot be represented by a 32-bit pointer, the run-time code signals a range error (SS$_RANGEERR). Use one or more of the following POINTER_SIZE option keywords to determine the pointer-size checks you want made: [NO]ASSIGNMENT Check whenever a 64-bit pointer is assigned to a 32-bit pointer (including use as an actual argument). [NO]CAST Check whenever a 64-bit pointer is cast to a 32-bit pointer. [NO]INTEGER_CAST Check whenever a long pointer is cast to a 32-bit integer. [NO]PARAMETER Check all formal parameters at function startup to make sure that all formal parameters declared to be 32-bit pointers are 32-bit values. ALL Do all checks. NONE Do no checks. If this qualifier is omitted, the default is /NOCHECK, which equates to /CHECK=(NOUNINITIALIZED_VARIABLE, NOBOUNDS, NOPOINTER_SIZE). If you specify /CHECK, the default is /CHECK=(UNINITIALIZED_VARIABLES, BOUNDS, POINTER_SIZE=(ASSIGNMENT,PARAMETER)).

/COMMENTS

/COMMENTS={AS_IS | SPACE} /COMMENTS=SPACE (D) (ANSI89, RELAXED, and MIA compiler modes) /NOCOMMENTS (D) (all other compiler modes) Governs whether or not comments appear in preprocess output files and, if they are to appear, whether they appear themselves or are replaced by a single space. Specify one of the following qualifier options: AS_IS Specifies that the comment appears in the output file. SPACE Specifies that a single space replaces the comment in the output file. NOCOMMENTS specifies that nothing replaces the comment in the output file. This can result in inadvertent token pasting. The HP C preprocessor might replace a comment at the end of a line or on a line by itself with nothing, even if /COMMENTS=SPACE is specified. Doing so does not change the meaning of the program. The default is /COMMENTS=SPACE for the ANSI89, RELAXED, and MIA compiler modes. The default is /NOCOMMENTS for all other compiler modes. Specifying just /COMMENTS defaults to /COMMENTS=AS_IS.

/CROSS_REFERENCE

/NOCROSS_REFERENCE (D) Specifies whether the compiler generates cross-references. If you specify /CROSS_REFERENCE, the compiler lists, for each variable referenced in the procedure, the line numbers of the lines on which the variable is referenced. You must use the /CROSS_REFERENCE qualifier with either the /SHOW=SYMBOLS or the /SHOW=BRIEF qualifiers. To obtain any type of listing, you must specify /LIST.

/DEBUG

/DEBUG[=(option[,...])] /DEBUG=(TRACEBACK,NOSYMBOLS) (D) /NODEBUG Includes information in the object module for use by the OpenVMS Debugger. You can select the following options: ALL Includes all possible debugging information. On Alpha systems, /DEBUG=ALL is equivalent to /DEBUG=(TRACEBACK,SYMBOLS). On VAX systems, /DEBUG=ALL is equivalent to /DEBUG=(TRACEBACK,SYMBOLS,INLINE). NONE Excludes any debugging information. NOSYMBOLS Suppresses generation of symbol table records. SYMBOLS Generates symbol table records. NOTRACEBACK Suppresses generation of traceback records. TRACEBACK Generates traceback records. Specifying /DEBUG with no options is equivalent to specifying /DEBUG=ALL. If the /DEBUG qualifier is not specified, the default is /DEBUG=(TRACEBACK,NOSYMBOLS).

/DECC

The /DECC qualifier is provided for compatibility with HP C on OpenVMS VAX systems. On OpenVMS Alpha systems, CC and CC/DECC are always equivalent.

/DEFINE

/DEFINE=(identifier[=definition][,...]) /NODEFINE (D) Performs the same function as the #define preprocessor directive. That is, /DEFINE defines a token string or macro to be substituted for every occurrence of a given identifier in the program. DCL converts all input to uppercase unless it is enclosed in quotation marks. The simplest form of a /DEFINE definition is: /DEFINE=true This results in a definition like the one that would result from the following definition: #define TRUE 1 Macro definitions must be enclosed in quotation marks as shown in the following definition: /DEFINE="funct(a)=a+sin(a)" This definition produces the same results as the following definition: #define funct(a) a+sin(a) When more than one /DEFINE is present on the CC command line or in a single compilation unit, only the last /DEFINE is used. When both /DEFINE and /UNDEFINE are present in a command line, /DEFINE is evaluated before /UNDEFINE. The default is /NODEFINE.

/DIAGNOSTICS

/DIAGNOSTICS[=file-spec] /NODIAGNOSTICS (D) Creates a file containing compiler diagnostic messages. The default file extension for a diagnostics file is .DIA. The diagnostics file is used with the DEC Language-Sensitive Editor (LSE). To display a diagnostics file, enter the command REVIEW/FILE=file-spec while in LSE.

/ENDIAN

/ENDIAN={BIG | LITTLE} /ENDIAN=LITTLE (D) Controls whether big or little endian ordering of bytes is carried out in character constants.

/ERROR_LIMIT

/ERROR_LIMIT[=number] /NOERROR_LIMIT Limits the number of Error-level diagnostic messages that are acceptable during program compilation. Compilation terminates when the limit (number) is exceeded. /NOERROR_LIMIT specifies that there is no limit on error messages. The default is /ERROR_LIMIT=30, which specifies that compilation terminates after 31 error messages.

/EXTERN_MODEL

/EXTERN_MODEL=option /EXTERN_MODEL=RELAXED_REFDEF (D) In conjunction with the /SHARE_GLOBALS qualifier, controls the initial extern model of the compiler. Conceptually, the compiler behaves as if the first line of the program being compiled was a #pragma extern_model directive with the model and psect name, if any, specified by the /EXTERN_MODEL qualifier and with the shr or noshr keyword specified by the /SHARE_GLOBALS qualifier. For example, assume the command line contains the following qualifier: /EXTERN_MODEL=STRICT_REFDEF="MYDATA"/NOSHARE The compiler will act as if the program began with the following line: #pragma extern_model strict_refdef "MYDATA" noshr See also #pragma extern_model. The /EXTERN_MODEL qualifier takes the following options, which have the same meaning as for the #pragma extern_model directive: COMMON_BLOCK RELAXED_REFDEF STRICT_REFDEF STRICT_REFDEF="NAME" GLOBALVALUE The default model on HP C is relaxed/refdef with the noshare attribute. This is different from the model used by VAX C, which is common block, share.

/FIRST_INCLUDE

FIRST_INCLUDE=(file[,...]) NOFIRST_INCLUDE (D) Includes the specified files before any source files. This qualifier corresponds to the Tru64 UNIX -FI switch. This qualifier is useful if you have command lines to pass to the C compiler that are exceeding the DCL command-line length limit. Using the /FIRST_INCLUDE qualifier can help solve this problem by replacing lengthy /DEFINE and /WARNINGS qualifiers with #define and #pragma message directives placed in a /FIRST_INCLUDE file. The default is NOFIRST_INCLUDE.

/FLOAT

/FLOAT=option Controls the format of floating-point variables. Options: D_FLOAT Double variables are represented in D_FLOAT format. The __D_FLOAT macro is predefined. G_FLOAT Double variables are represented in G_FLOAT format. The __G_FLOAT macro is predefined. IEEE_FLOAT Float and double variables are represented in IEEE floating-point format (S_FLOAT and T_FLOAT, respectively). The __IEEE_FLOAT macro or _IEEE_FP macro (if/IEEE_MODE=DENORM_RESULTS) is predefined. See also the /IEEE_MODE qualifier for selecting an IEEE floating-point mode. If /IEEE_MODE is not specified, the default behavior is /IEEE_MODE=FAST for Alpha systems and DENORM_RESULTS for I64 systems. On OpenVMS Alpha systems, representation of double variables defaults to G_FLOAT format if not overridden by another format with the /FLOAT qualifier. If you are linking against object-module libraries, and /PREFIX=ALL is not specified on the command line, a program compiled with G_FLOAT format must be linked with the object library VAXCRTL.OLB; a program compiled with D_FLOAT format must be linked with VAXCRTLD.OLB; and a program compiled with IEEE_FLOAT format must be linked with VAXCRTLT.OLB. The VAXCRTLX.OLB, VAXCRTLDX.OLB, and VAXCRTLTX.OLB libraries are used for the same floating-point formats, respectively, but include support for X_FLOAT format (/L_DOUBLE_SIZE=128). If /PREFIX=ALL is specified, then there is no need to link to the above-mentioned *.OLB object libraries. All the symbols you need are in STARLET.OLB.

/GRANULARITY

/GRANULARITY=option /GRANULARITY=QUADWORD (D) Determines how much memory to effectively cache for memory reference by the combination of the compiler and the underlying system. For example, quadword granularity may require that the system cache quadword values in registers. If access to data in the same granularity unit occurs simultaneously, corruption (by storing back stale values) can occur. Granularity has two aspects: references inside a particular data segment and references between data segments. The options are: o BYTE o LONGWORD o QUADWORD The default is /GRANULARITY=QUADWORD.

/IEEE_MODE

/IEEE_MODE=option /IEEE_MODE=FAST (D) Selects the IEEE floating-point mode to be used if /FLOAT=IEEE_FLOAT is specified. Options: FAST During program execution, only finite values (no infinities, NaNs, or denorms) are created. Exceptional conditions, such as floating point overflow and divide by zero, are fatal. This is the default for Alpha systems. UNDERFLOW_TO_ZERO Generate infinities and NaNs. Flush denormalized results and underflow to zero without exceptions. DENORM_RESULTS Same as UNDERFLOW_TO_ZERO, except that denorms are generated. INEXACT Same as DENORM_RESULTS, except that inexact values are trapped. This is the slowest mode.

/INCLUDE_DIRECTORY

/INCLUDE_DIRECTORY=(place[,...]) /NOINCLUDE_DIRECTORY (D) Provides similar functionality to the -I option of the cc command on DIGITAL UNIX systems. This qualifier allows you to specify additional places to search for include files. A place can be one of the following: o OpenVMS file-spec to be used as a default file-spec to RMS file services (example: DISK$:[directory]) o UNIX style pathname in quotation marks (example: "/sys") o Empty string ("") If one of the places is specified as an empty string, the compiler is not to search any of its conventionally-named places (DECC$USER_INCLUDE, DECC$SYSTEM_INCLUDE, DECC$LIBRARY_INCLUDE, SYS$COMMON:[DECC$LIB.INCLUDE.*], DECC$TEXT_LIBRARY, DECC$RTLDEF.TLB, SYS$STARLET_C.TLB). It searches only places specified explicitly on the command line by the /INCLUDE_DIRECTORY and /LIBRARY qualifiers (or by the location of the primary source file, depending on the /NESTED_INCLUDE_DIRECTORY qualifier). The basic search order depends on the form of the header-file name (after macro expansion). Additional aspects of the search order are controlled by other command-line qualifiers and the presence or absence of logical name definitions. All forms of header-file inclusion are affected: o In quotes (example: "stdio.h") o In angle brackets (example: <stdio.h>) o An identifier to be treated as a text-module name (example: stdio) Except where otherwise specified, searching a "place" means that the string designating the place is used as the default file-spec in a call to an RMS system service (for example, $SEARCH/$PARSE), with a file-spec consisting of the name in the #include directive without enclosing delimiters. The search terminates successfully as soon as a file can be opened for reading. For the quoted form, the search order is: 1. One of the following: o If /NESTED_INCLUDE_DIRECTORY=INCLUDE_FILE (the default) is in effect, search the directory containing the file in which the #include directive itself occurred. The meaning of "directory containing" is: the RMS "resultant string" obtained when the file in which the #include occurred was opened, except that the filename and subsequent components are replaced by the default file type for headers (".H", or just "." if /ASSUME=NOHEADER_TYPE_DEFAULT is in effect). The "resultant string" will not have translated any concealed device logical. o If /NESTED_INCLUDE_DIRECTORY=PRIMARY_FILE is in effect, search the default file type for headers using the context of the primary source file. This means that just the file type (".H" or ".") is used for the default file-spec but, in addition, the chain of "related file-specs" used to maintain the sticky defaults for processing the next top-level source file is applied when searching for the include file. o If /NESTED_INCLUDE_DIRECTORY=NONE is in effect, this entire step (Step 1) is bypassed. 2. Search the places specified in the /INCLUDE_DIRECTORY qualifier, if any. A place that can be parsed successfuly as an OpenVMS file-spec and that does not contain an explicit file type or version specification is edited to append the default header file type specification (".H" or "."). A place containing a "/" character is considered to be a UNIX-style name. If the name in the #include directive also contains a "/" character that is not the first character and is not preceded by a "!" character (that is, it is not an absolute UNIX-style pathname), then the name in the #include directive is appended to the named place, separated by a "/" character, before applying the decc$to_vms pathname translation function. 3. If "DECC$USER_INCLUDE" is defined as a logical name, search "DECC$USER_INCLUDE:.H", or just "DECC$USER_INCLUDE:." if /ASSUME=NOHEADER_TYPE_DEFAULT is in effect. 4. If the file is not found, follow the steps for the angle-bracketed form of inclusion. For the angle-bracketed form, the search order is: 1. Search the place "/". This is a UNIX-style name that can combine only with UNIX names specified explicitly in the #include directive. It causes a specification like <sys/types.h> to be considered first as /sys/types.h, which is translated to SYS:TYPES.H. 2. Search the places specified in the /INCLUDE_DIRECTORY qualifier, exactly as in Step 2 for the quoted form of inclusion. 3. If "DECC$SYSTEM_INCLUDE" is defined as a logical name, search "DECC$SYSTEM_INCLUDE:.H", or just "DECC$SYSTEM_INCLUDE:." if /ASSUME=NOHEADER_TYPE_DEFAULT is in effect. 4. If "DECC$LIBRARY_INCLUDE" is defined as a logical name and "DECC$SYSTEM_INCLUDE" is NOT defined as a logical name, search "DECC$LIBRARY_INCLUDE:.H", or just "DECC$LIBRARY_INCLUDE:." if /ASSUME=NOHEADER_TYPE_DEFAULT is in effect. 5. If neither "DECC$LIBRARY_INCLUDE" nor "DECC$SYSTEM_INCLUDE" are defined as logical names, then search the default list of places for plain text-file copies of compiler header files as follows: SYS$COMMON:[DECC$LIB.INCLUDE.DECC$RTLDEF]*.H SYS$COMMON:[DECC$LIB.INCLUDE.SYS$STARLET_C]*.H If the file is not found, perform the text library search described in the next step. 6. Extract the simple filename and file type from the #include specification and use the filename as the module name to search a list of text libraries associated with that file type. For any file type, the initial text libraries searched consist of those named on the command line with /LIBRARY qualifiers. If the /INCLUDE_DIRECTORY qualifier contained an empty string, no further text libraries are searched. Otherwise, DECC$TEXT_LIBRARY is searched for all file types. If "DECC$LIBRARY_INCLUDE" is defined as a logical name, then no further text libraries are searched. Otherwise, the subsequent libraries searched for each file type are: For ".H" or ".": SYS$LIBRARY:DECC$RTLDEF.TLB SYS$LIBRARY:SYS$STARLET_C.TLB For any file type other then ".H" or ".": SYS$LIBRARY:SYS$STARLET_C.TLB 7. If the previous step fails, search: SYS$LIBRARY:.H Under /ASSUME=NOHEADER_TYPE_DEFAULT, the default file type is modified as usual. For the text-module (non-portable) form of #include: The name can only be an identifier. It, therefore, has no associated "file type". The identifier is used as a module name to search the following: 1. The text libraries named on the command line with /LIBRARY qualifiers, in left-to-right order. 2. The following list of text libraries in the order shown (unless the /INCLUDE_DIRECTORY qualifier contains an empty string, in which case no further text libraries are searched): DECC$TEXT_LIBRARY SYS$LIBRARY:DECC$RTLDEF.TLB SYS$LIBRARY:SYS$STARLET_C.TLB

/L_DOUBLE_SIZE

/L_DOUBLE_SIZE=option /L_DOUBLE_SIZE=128 (D) Determines how the compiler interprets the long double type. The qualifier options are 64 and 128. /L_DOUBLE_SIZE=64 treats all long double references as G_FLOAT, D_FLOAT, or T_FLOAT, depending on the value of the /FLOAT qualifier. /L_DOUBLE_SIZE=128 treats all long double references as X_FLOAT.

/LIBRARY

Indicates that the associated input file is a library containing source text modules specified in #include directives. The compiler searches the specified library for all #include module names that are not enclosed in angle brackets or quotation marks. The name of the library must be concatenated with the file specification using a plus sign. For example: CC DATAB/LIBRARY+APPLIC

/LINE_DIRECTIVES

/LINE_DIRECTIVES (D) /NOLINE_DIRECTIVES Controls whether or not #line directives appear in preprocess output files.

/LIST

/LIST[=file-spec] (Batch default) /NOLIST (Interactive default) Controls whether a listing file is produced. The default output file extension is .LIS.

/MACHINE_CODE

/MACHINE_CODE /NOMACHINE_CODE (D) Controls whether the listing produced by the compiler includes the machine language code generated during the compilation. If you use this qualifier you also need to use the /LIST qualifier.

/MAIN=POSIX_EXIT

/MAIN /NOMAIN (D) Directs the compiler to call __posix_exit instead of exit when returning from main.

/MEMBER_ALIGNMENT

/MEMBER_ALIGNMENT (D) /NOMEMBER_ALIGNMENT Directs the compiler to naturally align data structure members. This means that data structure members are aligned on the next boundary appropriate to the type of the member, rather than on the next byte. For instance, a long variable member is aligned on the next longword boundary; a short variable member is aligned on the next word boundary. Any use of the #pragma member_alignment or #pragma nomember_alignment directives within the source code overrides the setting established by this qualifier. Specifying /NOMEMBER_ALIGNMENT causes data structure members to be byte-aligned (with the exception of bit-field members). For 64-bit systems, the default is /MEMBER_ALIGNMENT. For OpenVMS VAX systems, the default is /NOMEMBER_ALIGNMENT.

/MMS_DEPENDENCIES

/MMS_DEPENDENCIES[=(option[,option)]] /NOMMS_DEPENDENCIES (D) Directs the compiler to produce a dependency file. Dependency files list all source files and included files for each object module. Note that the /OBJECT qualifier has no impact on the dependency file. The dependency file format is: object_file_name :<tab><source file name> object_file_name :<tab><full path to first include file> object_file_name :<tab><full path to second include file> You can specify none, one, or all of the following qualifier options: FILE[=filespec] Specifies where to save the dependency file. The default file extension for a dependency file is .mms. Other than using a different default extension, this qualifier uses the same procedure that /OBJECT and /LIST use for determining the name of the output file. SYSTEM_INCLUDE_FILES Specifies whether or not to include dependency information about system include files (that is, those included with #include <filename>). The default is to include dependency information about system include files. Note that the /OBJECT qualifier has no impact on the dependency file. TARGET=string Specifies the target that appears in the output .mms file. The default is TARGET="" in which case the target is the source file name with an .OBJ extension, as in previous versions of the compiler. If you specify any string other than .OBJ, that string is used as the target. For the special case of .OBJ, the compiler uses the name of the object file, stripped of any version number and path, for the MMS target.

/NAMES

/NAMES=(option1,option2) /NAMES=(UPPERCASE,TRUNCATED) (D) Option1 converts all definitions and references of external symbols and psects to the specified case: o /NAMES=UPPERCASE (default) converts to uppercase. o /NAMES=AS_IS leaves the case unchanged. Option2 controls whether or not long external names greater than 31 characters get truncated or shortened: o /NAMES=TRUNCATED (default) truncates long external names o /NAMES=SHORTENED shortens long external names. A shortened name consists of the first 23 characters of the name followed by a 7-character Cyclic Redundancy Check (CRC) computed by looking at the full name, and then a "$". The CRC is generated by calling lib$crc as follows: long initial_crc = -1; crc_result = lib$crc(good_crc_table, &initial_crc, <descriptor of string to CRC>); where good_crc_table is: /* ** Default CRC table: ** ** This table was taken from Ada's generalized name generation ** algorithm. It represents a commonly used CRC polynomial ** known as AUTODIN-II. For more information see the VAX ** Macro OpenVMS documentation under the CRC VAX instruction. */ static const unsigned int good_crc_table[16] = {0x00000000, 0x1DB71064, 0x3B6E20C8, 0x26D930AC, 0x76DC4190, 0x6B6B51F4, 0x4DB26158, 0x5005713C, 0xEDB88320, 0xF00F9344, 0xD6D6A3E8, 0xCB61B38C, 0x9B64C2B0, 0x86D3D2D4, 0xA00AE278, 0xBDBDF21C}; By default, the compiler issues a warning and truncates the name to 31 characters. The /NAMES qualifier does not affect the names of the $ABS$, $BSS$, $CODE$, $DATA$, $LINK$, $LITERAL$, and $READONLY$ psects.

/NESTED_INCLUDE_DIRECTORY

/NESTED_INCLUDE_DIRECTORY[=option] /NESTED_INCLUDE_DIRECTORY=INCLUDE_FILE (D) Controls the first step in the search algorithm the compiler uses when looking for files included using the quoted form of the #include preprocessing directive: #include "file-spec" /NESTED_INCLUDE_DIRECTORY has the following options: PRIMARY_FILE Directs the compiler to search the default file type for headers using the context of the primary source file (the .C file). This means that just the file type (".H" or ".") is used for the default file-spec but, in addition, the chain of "related file-specs" used to maintain the sticky defaults for processing the next top-level source file is applied when searching for the include file. INCLUDE_FILE Directs the compiler to search the directory containing the file in which the #include directive itself occurred. The meaning of "directory containing" is: the RMS "resultant string" obtained when the file in which the #include occurred was opened, except that the filename and subsequent components are replaced by the default file type for headers (".H", or just "." if /ASSUME=NOHEADER_TYPE_DEFAULT is in effect). The "resultant string" will not have translated any concealed device logical. NONE Directs the compiler to skip the first step of processing #include "file.h" directives. The compiler starts its search for the include file in the /INCLUDE_DIRECTORY directories. See also /INCLUDE_DIRECTORY.

/OBJECT

/OBJECT[=file-spec] (D) /NOOBJECT Controls whether the compiler produces an output object module. The default output file extension is .OBJ. Note that the /OBJECT qualifier has no impact on the output file of the /MMS_DEPENDENCIES qualifier.

/OPTIMIZE

/OPTIMIZE[=option] (D) /NOOPTIMIZE Controls the level of code optimization that the compiler performs. /OPTIMIZE has the following options: LEVEL=n Selects the level of optimization. Specify an integer from 0 (no optimization) to 5 (full optimization, including pipelining). [NO]INLINE[=keyword] Provides inline expansion of functions that yield optimized code when they are expanded. You can specify one of the following keywords: NONE No inlining is done, even if requested by the language syntax. /OPTIMIZE=INLINE=NONE is equivalent to /OPTIMIZE=NOINLINE. MANUAL Inlines only those function calls for which the program explicitly requests inlining. AUTOMATIC Inlines all of the function calls in the MANUAL category, plus additional calls that the compiler determines are appropriate on this platform. On Alpha systems, this is the same as SIZE; on I64 systems, this is the same as SPEED. AUTOMATIC is the default. SIZE Inlines all of the function calls in the MANUAL category plus any additional calls that the compiler determines would improve run-time performance without significantly increasing the size of the program. SPEED Performs more aggressive inlining for run-time performance, even when it might significantly increase the size of the program. ALL Inlines every call that can be inlined while still generating correct code. Recursive routines, however, will not cause an infinite loop at compile time. Note that /OPT=INLINE=ALL is not recommended for general use, because it performs very aggressive inlining and can cause the compiler to exhaust virtual memory or take an unacceptably long time to compile [NO]INTRINSICS Controls whether or not certain functions are handled as intrinsic functions without explicitly enabling each of them as an intrinsic through the #pragma intrinsic preprocessor directive. Functions that can be handled as intrinsics are: Main Group - ANSI: abs atanl atan2l ceill cosl floorf memcpy sinf atan atan2 ceil cos fabs floorl memmove sinl atanf atan2f ceilf cosf floor labs memset strcpy sin strlen Main Group - Non-ANSI: alloca atand2 bzero sind atand bcopy cosd Printf functions: fprintf printf sprintf Printf non-ANSI: snprintf ANSI math functions that set errno, thereby requiring /ASSUME=NOMATH_ERRNO: acos asinf coshl log log10f powl sqrt tanf acosf asinl exp logf log10l sinh sqrtf tanl acosl cosh expf logl pow sinhf sqrtl tanh asin coshf expl log10 powf sinhl tan tanhf tanhl Non-ANSI math functions that set errno, thereby requiring /ASSUME=NOMATH_ERRNO: log2 tand The /OPTIMZE=INTRINSICS qualifier works together with /OPTIMIZE=LEVEL=n and some other qualifiers to determine how intrinsics are handled: o If the optimization level specified is less than 4, the intrinsic-function prototypes and call formats are checked, but normal run-time calls are still made. o If the optimization level is 4 or higher, intrinsic code is generated. o If /STANDARD=ANSI89 is specified, non-ANSI-Standard functions are not automatically intrinsic and do not even have their prototypes checked. They are only checked if the non-ANSI-Standard functions are made intrinsic through #pragma intrinsic. o Intrinsic code is not generated for math functions that set the errno variable unless /ASSUME=NOMATH_ERRNO is specified. Such math functions, however, do have their prototypes and call formats checked. The default is /OPTIMIZE=INTRINSICS, which turns on this handling. To turn it off, specify /NOOPTIMIZE or /OPTIMIZE=NOINTRINSICS. [NO]PIPELINE Controls Activation of the software pipelining optimization. The software pipelining optimization applies instruction scheduling to certain innermost loops, allowing instructions within a loop to "wrap around" and execute in a different iteration of the loop. This can reduce the impact of long-latency operations, resulting in faster loop execution. Software pipelining can be more effective when you combine /OPTIMIZE=PIPELINE with the appropriate /OPTIMIZE=TUNE keyword for the target Alpha processor generation. Software pipelining also enables the prefetching of data to reduce the impact of cache misses. Software pipelining is a subset of the optimizations activated by optimization level 5. To determine whether using /OPTIMIZE=PIPELINE benefits your particular program, you should time program execution for the same program (or subprogram) compiled with and without software pipelining. For programs that contain loops that exhaust available registers, longer execution times can result with optimization level 5, requiring use of /OPTIMIZE=UNROLL=n to limit loop unrolling. UNROLL=n Controls loop unrolling done by the optimizer. UNROLL=n means to unroll loop bodies n times. The default is UNROLL=0, which means the optimizer will use its own default unroll amount. TUNE=keyword Selects processor-specific instruction tuning for implementations of the Alpha or Itanium architecture. Regardless of the setting of the /OPTIMIZE=TUNE flag, the generated code will run correctly on all implementations of the Alpha architecture. Tuning for a specific implementation can provide improvements in run-time performance. Code tuned for a specific target might run slower on another target. For Alpha systems, you can specify one of the following keywords: GENERIC Selects instruction tuning that is appropriate for all implementations of the Alpha architecture. This option is the default. HOST Selects instruction tuning that is appropriate for the machine on which the code is being compiled. EV4 Selects instruction tuning for the 21064, 21064A, 21066, and 21068 implementations of the Alpha architecture. EV5 Selects instruction tuning for the 21164 implementation of the Alpha architecture. EV56 Selects instruction tuning for 21164 chip implementations that use the byt- and word-manipulation instruction extensions of the Alpha architecture. Running programs compiled with the EV56 keyword might incur emulation overhead on EV4 and EV5 processors, but will still run correctly on OpenVMS Version 7.1 (or later) systems. PCA56 Selects instruction tuning for the 21164PC chip implementation that uses the byte- and word-manipulation instruction extensions and multimedia instruction extensions of the Alpha architecture. Running programs compiled with the PCA56 keyword might incur emulation overhead on EV4, EV5, and EV56 processors, but will still run correctly on OpenVMS Version 7.1 (or later) systems. EV6 Selects instruction tuning for the 21264 implementation of the Alpha architecture. EV67 Selects instruction tuning for the second-generation 21264 implementation of the Alpha architecture. The default is /OPTIMIZE, which is equivalent to /OPTIMIZE=(INLINE=AUTOMATIC,LEVEL=4,UNROLL=0,TUNE=GENERIC).

/PDSC_MASK

/PDSC_MASK=option Forces the compiler to set the PDSC$V_EXCEPTION_MODE field of the procedure descriptor for each function in the compilation unit to the specified value, regardless of the setting of any other qualifiers. Ordinarily the PDSC$V_EXCEPTION_MODE field gets set automatically by the compiler, depending on which /IEEE mode is specified on the command line. The /PDSC_MASK qualifier overrides the /IEEE_MODE qualifer setting of this field. NOTE: The /PDSC_MASK qualifier is a low-level systems-programming feature that is seldom necessary. Its usage can produce object modules that do not conform to the OpenVMS common language environment and, within C, it can produce non-standard and seemingly incorrect floating-point behaviors at runtime. The qualifier option keywords are exactly the allowed values defined in the OpenVMS Calling Standard for this field, stripped of the PDSC$V_EXCEPTION_MODE prefix (for example, /PDSC_MASK=SIGNAL sets the field to PDSC$V_EXCEPTION_MODE_SIGNAL). The qualifier options are: SIGNAL Maps to PDSC$K_EXCEPTION_MODE_SIGNAL. Raise exceptions for all except underflow (which equals 0). SIGNAL_ALL Maps to PDSC$K_EXCEPTION_MODE_SIGNAL_ALL. Raise exceptions for all. SILENT Maps to PDSC$K_EXCEPTION_MODE_SILENT. Raise no exceptions. Create only finite values: no infinities, no denorms, no NaNs. The function result or errno needs to be examined.) FULL_IEEE Maps to PDSC$K_EXCEPTION_MODE_FULL_IEEE. Raise no exceptions except as controlled by separate IEEE exception-enabling bits. Create exceptional values according to the IEEE standard. CALLER Maps to PDSC$K_EXCEPTION_MODE_CALLER. Emulate the same mode as the caller. In the absence the /PDSC_MASK qualifier, the compiler sets the PDSC$V_EXCEPTION_MODE field automatically, depending on the /IEEE_MODE qualifier setting: o If /IEEE_MODE is specified with UNDERFLOW_TO_ZERO, DENORM_RESULTS, or INEXACT, then /PDSC_MASK is set to FULL_IEEE. o In all other cases, /PDSC_MASK is set to SILENT. This setting differs from the calling-standard-specified default of SIGNAL used by Fortran, and is largly responsible for the ANSI C conforming behavior of the math library when called from C or C++ programs.

/PLUS_LIST_OPTIMIZE

/PLUS_LIST_OPTIMIZE /NOPLUS_LIST_OPTIMIZE (D) Provides improved optimization and code generation across file boundaries that would not be available if the files were compiled seperately. When you specify /PLUS_LIST_OPTIMIZE on the command line in conjunction with a series of file specifications separated by plus signs, the compiler does not concatenate each of the specified source files together. Instead, each file is treated separately for purposes of parsing, except that the compiler will issue diagnostics about conflicting external declarations and function definitions that occur in different files. For purposes of code generation, the compiler treats the files as one application. The default is /NOPLUS_LIST_OPTIMIZE.

/POINTER_SIZE

/POINTER_SIZE=option /NOPOINTER_SIZE (D) Controls whether or not pointer-size features are enabled, and whether pointers are 32 bits or 64 bits long. The default is /NOPOINTER_SIZE, which disables pointer-size features, such as the ability to use #pragma pointer_size, and directs the compiler to assume that all pointers are 32-bit pointers. This default represents no change over previous versions of the compiler. You must specify one of the following options: SHORT The compiler assumes 32-bit pointers. 32 Same as SHORT. LONG[=ARGV] The compiler assumes 64-bit pointers. If the ARGV option to LONG or 64 is present, the main argument argv will be an array of long pointers instead of an array of short pointers. 64[=ARGV] Same as LONG. Specifying /POINTER_SIZE=32 directs the compiler to assume that all pointers are 32-bit pointers. But unlike the default of /NOPOINTER_SIZE, /POINTER_SIZE=32 enables use of the #pragma pointer_size long and #pragma pointer_size short preprocessor directives to control pointer size throughout your program. Specifying /POINTER_SIZE=64 directs the compiler to assume that all pointers are 64-bit pointers, and also enables use of the #pragma pointer_size directives.

/PRECISION

/PRECISION={SINGLE | DOUBLE} Controls whether floating-point operations on float variables are performed in single or double precision. The default is /PRECISION=DOUBLE for /STANDARD=VAXC and /STANDARD=COMMON modes. The default is /PRECISION=SINGLE for /STANDARD=ANSI89 and /STANDARD=RELAXED modes.

/PREFIX_LIBRARY_ENTRIES

Controls the HP C RTL name prefixing. The HP C Run-Time Library (RTL) shareable image (DECC$SHR.EXE) resides in IMAGELIB.OLB with a DECC$ prefix for its entry points. Every external name in IMAGELIB.OLB has a DECC$ prefix, and, therefore, has an OpenVMS conformant name space (a requirement for inclusion in IMAGELIB). The /[NO]PREFIX_LIBRARY_ENTRIES qualifier lets you control the HP C RTL name prefixing. The qualifier options are: EXCEPT=(name,...) The names specified are not prefixed. ALL_ENTRIES All C RTL names, as well as C99 names not supported by the underlying C RTL, are prefixed. ANSI_C89_ENTRIES Only ANSI library names are prefixed. C99_ENTRIES Only ISO C Standard 99 (C99) library names are prefixed. These are a superset of the external names prefixed under /PREFIX=ANSI_C89_ENTRIES and a subset of those prefixed under /PREFIX=ALL_ENTRIES. Note: The compiler prefixes C99 entries based on their inclusion in the standard, not on the availability of their implementations in the run-time library. So calling functions introduced in C99 that are not yet implemented in the HP C RTL will produce unresolved references to symbols prefixed by DECC$ when the program is linked. In addition, the compiler issues a CC-W-NOTINCRTL message when it prefixes a name that is not in the current C RTL. RTL="name" Generates references to the C RTL indicated by the "name" keyword. If no keyword is specified, then references to the HP C RTL are generated by default. To use an alternate RTL, see its documentation for the name to use. If you want no names prefixed, specify /NOPREFIX_LIBRARY_ENTRIES. For /STANDARD=ANSI89, the default is /PREFIX=ANSI_C89_ENTRIES. For /STANDARD=C99, the default is /PREFIX=C99_ENTRIES. For all other compiler modes, the default is /PREFIX=ALL.

/PREPROCESS_ONLY

/PREPROCESS_ONLY[=filename] /NOPREPROCESS_ONLY (D) Causes the compiler to perform only the actions of the preprocessor phase and write the resulting processed text out to a file. Furthermore, no object file or analysis file can be produced.

/PROTOTYPE

/PROTOTYPE[=(option[,...])] /NOPROTOTYPE (D) Creates an output file containing function prototypes for all global functions defined in the module being compiled. The qualifier options are: [NO]IDENTIFIERS Indicates that identifier names are to be included in the prototype declarations that appear in the output file. The default is NOIDENTIFIERS. [NO]STATIC_FUNCTIONS Indicates that prototypes for static function definitions are to be included in the output file. The default is NOSTATIC_FUNCTIONS. FILE=filename Specifies the output file name. When not specified, the output file name has the same defaults as the listing file, except that the file extension is .CH instead of .LIS. The default is /NOPROTOTYPES.

/PSECT_MODEL

/PSECT_MODEL=MULTILANGUAGE /PSECT_MODEL=NOMULTILANGUAGE (D) Controls whether the compiler allocates the size of overlaid psects to ensure compatibility when the psect is shared by code created by other HP compilers. The problem this switch solves can occur when a psect generated by a Fortran COMMON block is overlaid with a psect consisting of a C struct. Because Fortran COMMON blocks are not padded, if the C struct is padded, the inconsistent psect sizes can cause linker error messages. Compiling with /PSECT_MODEL=MULTILANGUAGE ensures that HP C uses a consistent psect size allocation scheme. The corresponding Fortran switch is /ALIGN=COMMON=[NO]MULTILANGUAGE. The default is /PSECT=NOMULTILANGUAGE, which is the old default behavior of the compiler, and is sufficient for most applications.

/REENTRANCY

/REENTRANCY=option /REENTRANCY=TOLERANT (D) Controls the type of reentrancy that reentrant HP C RTL routines will exhibit. (See also the decc$set_reentrancy RTL routine.) This qualifier is for use only with a module containing the main routine. The reentrancy level is set at run time according to the /REENTRANCY qualifier specified while compiling the module containing the main routine. You can specify one of the following options: AST Uses the __TESTBITSSI builtin to perform simple locking around critical sections of RTL code, and may additionally disable asynchronous system traps (ASTs) in locked region of codes. This type of locking should be used when AST code contains calls to HP C RTL I/O routines. MULTITHREAD Designed to be used in conjunction with the DECthreads product. It performs DECthreads locking and never disables ASTs. NONE Gives optimal performance in the RTL, but does absolutely no locking around critical sections of RTL code. It should only be used in a single threaded environment when there is no chance that the thread of execution will be interrupted by an AST that would call the HP C RTL. TOLERANT Uses the __TESTBITSSI builtin to perform simple locking around critical sections of RTL code, but ASTs are not disabled. This type of locking should be used when ASTs are used and must be delivered immediately. This is also the default reentrancy type.

/REPOSITORY

Specifies a repository for the compiler to store shortened external name information. When /NAMES=SHORTENED is specified, the compiler stores to the repository any external names that were shortened. The demangler utility can then be used to map the shortened names back to the names used in the original C program. By default, the qualifier is not active unless /NAMES=SHORTENED has been specified, in which case the default is /REPOSITORY=[.CXX_REPOSITORY]. Note that the default name of the repository is the same as that used by the HP C++ compiler for decoding mangled names. This is intentional. A C++ mangled name cannot match a shortened name, so a single repository can be used by both the HP C and HP C++ compilers.

/ROUNDING_MODE

/ROUNDING_MODE=option /ROUNDING_MODE=NEAREST (D) For /FLOAT=IEEE_MODE, the /ROUNDING_MODE qualifier lets you select one of the following IEEE rounding modes: o NEAREST (default) o DYNAMIC o MINUS_INFINITY o CHOPPED For /FLOAT=G_FLOAT or /FLOAT=D_FLOAT, rounding defaults to /ROUNDING_MODE=NEAREST, with no other choice of rounding mode.

/SHARE_GLOBALS

/NOSHARE_GLOBALS (D) Performs two functions: o Controls whether the compiler treats declarations of objects with the globaldef keyword as shared or not shared. o Controls whether the initial extern_model is shared or not shared (for those extern_models where it is allowed). The initial extern_model of the compiler is a fictitious pragma constructed from the settings of the /EXTERN_MODEL and /SHARE_GLOBALS. The default value is /NOSHARE_GLOBALS. This default value is different from VAX C (which treated externs as SHR by default), and has the following impact: 1. When linking old object files or object libraries with newly produced object files, you might get "conflicting attributes for psect" messages, which can be safely ignored as long as you are not building shareable libraries. 2. The /NOSHARE_GLOBALS default makes building shareable libraries easier.

/SHOW

/SHOW=(option[,...]) /SHOW=SOURCE (D) Used with the /LIST qualifier to set or cancel specific listing options. You can select the following options: ALL Print all listing information. [NO]BRIEF Print a brief symbol table, listing only those identifiers that are referenced in the program. [NO]CROSS_REFERENCE Specifies whether the compiler generates cross-references. If you specify /SHOW=CROSS_REFERENCE, the compiler lists, for each variable referenced in the procedure, the line numbers of the lines on which the variable is referenced. You may use /SHOW=CROSS_REFERENCE with /SHOW=SYMBOLS. Otherwise, specifying /SHOW=CROSS_REFERENCE also gives you /SHOW=BRIEF. To obtain any type of listing, you must specify /LIST. /SHOW=CROSS_REFERENCE is the same as specifying /[NO]CROSS_REFERENCE. (D = NOCROSS_REFERENCE) [NO]DICTIONARY Print/do not print Common Data Dictionary definitions. (D = NODICTIONARY) [NO]EXPANSION Print/do not print macro expansions. (D = NOEXPANSION) [NO]HEADER Print/do not print header lines at the top of each page. (D = HEADER) [NO]INCLUDE Print/do not print contents of #include files. (D = NOINCLUDE) [NO]MESSAGES Print/do not print a list of all messages that are in effect at compilation (based on the settings of /STANDARD, /WARNINGS, and #pragma message). (D = NOMESSAGES) NONE Print no listing information. [NO]SOURCE Print/do not print source file statements. (D = SOURCE) [NO]STATISTICS Print/do not print compiler performance statistics. (D = NOSTATISTICS) [NO]SYMBOLS Print/do not print symbol table information in the listing file. (D = NOSYMBOLS)

/STANDARD

/STANDARD=(option) /STANDARD=RELAXED (equivalent to /NOSTANDARD) (D) /NOSTANDARD (D) Defines the compilation mode. You can select the following options: ANSI89 Places the compiler in strict ANSI C Standard 89 (C89) mode. This mode compiles the C language as defined by the American National Standard for C, along with any extensions not prohibited by that standard. C99 On OpenVMS Alpha and I64 systems, places the compiler in strict ISO/IEC C Standard 99 (C99) mode. This mode accepts just the C99 language without extensions, and diagnoses violations of the C99 standard. /STANDARD=C99 defines the __STDC_VERSION__ macro to the C99-specified value of 199901L, because C99 is a superset of Amendment 1 to the C89 standard, and the default mode of RELAXED is a superset of C99. On OpenVMS VAX systems, produces a warning and places the compiler in /STANDARD=RELAXED ANSI89 mode. LATEST On OpenVMS Alpha and I64 systems, places the compiler in the latest ISO C standard dialect. /STANDARD=LATEST is currently equivalent to /STANDARD=C99, but is subject to change when newer versions of the ISO C standard are released. RELAXED Places the compiler in relaxed ANSI C Standard mode. The compiler accepts ANSI/ISO C Standard C89 and C99 features, as well as nearly all language extensions (such as additional HP C keywords and predefined macros that do not begin with an underscore). It excludes only K&R (COMMON mode), VAX C, and Microsoft features that conflict with standard C. This is the default mode of the compiler, and is equivalent to /NOSTANDARD. MS Places the compiler in Microsoft compatibility mode, which interprets source programs according to certain language rules followed by the C compiler provided with the Microsoft Visual C++ compiler product. ISOC94 Places the compiler in ISO C 94 mode, which enables digraph processing. It also defines the predefined macro __STDC_VERSION__=199409 when specified alone or in combination with the ANSI89, MIA, RELAXED, MS, COMMON, or PORTABLE keywords. This option can be specified alone or with any other /STANDARD option except VAXC. If it is specified alone, the default major mode is RELAXED. COMMON Places the compiler in K & R language mode; that is, compatibility with older UNIX compilers such as pcc and gcc. This mode is close to a subset of /STANDARD=VAXC mode. VAXC Places the compiler in VAX C mode. There are differences in the C language as implemented in previous versions of VAX C and the C language as defined by ANSI (the differences are primarily concerned with how the preprocessor works). This mode provides compatibility for programs that depend on old VAX C behavior. PORTABLE Places the compiler in RELAXED mode, and enables the issuance of diagnostics that warn of any nonportable usages encountered. Note that /STANDARD=PORTABLE is supported for VAX C compatibility only. It is equivalent to the recommended combination of qualifiers /STANDARD=RELAXED /WARNINGS=ENABLE=PORTABLE. MIA Places the compiler in strict ANSI C mode with the following behavior differences to conform to the Multivendor Integration Architecture (MIA) standard: o On OpenVMS VAX systems, G_FLOAT becomes the default floating-point format for double variables. (On OpenVMS Alpha systems, G_FLOAT is already the default.) o In structures, zero-length bit fields cause the next bit field to start on an integer boundary, rather than on a character boundary. If the /STANDARD qualifier is not specified, the default is /NOSTANDARD, which is equivalent to /STANDARD=RELAXED. If you specify the /STANDARD qualifier, you must supply an option. With one exception, the /STANDARD qualifier options are mutually exclusive. Do not combine them. The exception is that you can specify /STANDARD=ISOC94 with any other option except VAXC. HP C modules compiled in different modes can be linked and executed together.

/TIE

/NOTIE (D) Enables the compiled code to be used in combination with translated images, either because the code might call into a translated image or might be called from a translated image.

/UNDEFINE

/UNDEFINE=(identifier[,...]) /NOUNDEFINE (D) Performs the same function as the #undef preprocessor directive: it cancels a macro definition. The /UNDEFINE qualifier is useful for undefining the predefined HP C preprocessor constants. For example, if you use a preprocessor constant (such as vaxc, VAXC, VAX11C, or vms) to conditionally compile segments of code specific to HP C for OpenVMS Systems, you can undefine constants to see how the portable sections of your program execute. For example: /UNDEFINE="vaxc" When both /DEFINE and /UNDEFINE are present on the CC command line, /DEFINE is evaluated before /UNDEFINE. The default is /NOUNDEFINE.

/UNSIGNED_CHAR

/NOUNSIGNED_CHAR (D) Changes the default for all char types from signed to unsigned. This qualifier causes all plain char declarations to have the same representation and set of values as signed char declarations. The default is /NOUNSIGNED_CHAR.

/VERSION

/VERSION /NOVERSION (D) Directs the compiler to print out the compiler version and platform. The compiler version is the same as in the listing file. This qualifier helps you to report what compiler you are using. When this qualifier is specified, the compiler just prints its version and exits. No other qualifiers are processed, no source file is read, and no object module is produced. The syntax for using this qualifier is: CC/VERSION The default is /NOVERSION.

/WARNINGS

/WARNINGS[=(option[,...])] /WARNINGS (D) /NOWARNINGS Controls the issuance of compiler diagnostic messages, or groups of messages. The default qualifier, /WARNINGS, enables all warning and informational messages for the compiler mode you are using. The /NOWARNINGS qualifier suppresses the informational and warning messages. Also see the #pragma message preprocessor directive. The options are: DISABLE=msg-list Suppresses the issuance of the indicated messages. Only messages of severity Warning (W) or Information (I) can be disabled. If the message has severity of Error (E) or Fatal (F), it is issued regardless of any attempt to disable it. ENABLE=msg-list Enables the issuance of the indicated messages. NOINFORMATIONALS Suppresses informational messages. EMIT_ONCE=msg-list Emits the specified messages only once per compilation. Errors and Fatals are always emitted. You cannot set them to EMIT_ONCE. EMIT_ALWAYS=msg-list Emits the specified messages at every occurrence of the condition. ERRORS=msg-list Sets the severity of each message in the message-list to Error. Note that supplied Error messages and Fatal messages cannot be made less severe. (Exception: A message can be upgraded from Error to Fatal, then later downgraded to Error again, but it can never be downgraded from Error.) Warnings and Informationals can be made any severity. FATALS=msg-list Sets the severity of each message on the message-list to Fatal. INFORMATIONALS=msg-list Sets the severity of each message in the message-list to Informational. Note that Fatal and Error messages cannot be made less severe. WARNINGS=msg-list Sets the severity of each message in the message-list to Warning. Note that Fatal and Error messages cannot be made less severe. VERBOSE Displays the full message information for every compiler message encountered. This information includes the message description and user action, as well as the identifier, severity, and message text. When /WARNINGS=VERBOSE is used with /LIST/SHOW=MESSAGES, a list of all messages in effect at compilation are added to the listing file, showing the full information for each message. The msg-list can be any one of the following: o A single message identifier (within parentheses, or not). The message identifier is the name following the severity at the start of a line when a message is issued. For example, in the following message, the message identifier is GLOBALEXT: %CC-W-GLOBALEXT, a storage class of globaldef, globalref, or globalvalue is a language extension. o A single message-group name (within parentheses, or not). Message-group names are: ALL All the messages in the compiler ALIGNMENT Messages about unusual or inefficient data alignment. C_TO_CXX Messages reporting the use of C features that would be invalid or have a different meaning if compiled by a C++ compiler. CDD Messages about CDD (Common Data Dictionary) support. CHECK Messages reporting code or practices that, although correct and perhaps portable, are sometimes considered ill-advised because they can be confusing or fragile to maintain. For example, assignment as the test expression in an "if" statement. NOTE: The check group gets defined by enabling LEVEL5 messages. DEFUNCT Messages reporting the use of obsolete features: ones that were commonly accepted by early C compilers but were subsequently removed from the language. NEWC99 Messages reporting the use of the new C99 Standard features. NOANSI This is a deprecated message group. It is an obsolete synonym for NOC89. Also see message groups NEWC99, NOC89, NOC99. NOC89 Messages reporting the use of non-C89 Standard features. NOC99 Messages reporting the use of non-C99 Standard features. OBSOLESCENT Messages reporting the use of features that are valid in ANSI Standard C, but which were identified in the standard as being obsolescent and likely to be removed from the language in a future version of the standard. OVERFLOW Messages that report assignments and/or casts that can cause overflow or other loss of data significance. PERFORMANCE Messages reporting code that might result in poor run-time performance. PORTABLE Messages reporting the use of language extensions or other constructs that might not be portable to other compilers or platforms. PREPROCESSOR Messages reporting questionable or non-portable use of preprocessing constructs. QUESTCODE Messages reporting questionable coding practices. Similar to the CHECK group, but messages in this group are more likely to indicate a programming error rather than just a non-robust style. Enabling the QUESTCODE group provides lint-like checking. RETURNCHECKS Messages related to function return values. UNINIT Messages related to using uninitialized variables. UNUSED Messages reporting expressions, declarations, header files, CDD records, static functions, and code paths that are not used. o A single message-level name (within parentheses, or not). Note: There is a core of very important compiler messages that are enabled by default, regardless of what you specify with /WARNINGS or #pragma message. Referred to as message level 0, it includes all messages issued in header files, and comprises what is known as the nostandard group. All other message levels add additional messages to this core of enabled messages. You cannot modify level 0 (You cannot disable it, enable it, change its severity, or change its EMIT_ONCE characteristic). However, you can modify individual messages in level 0, provided such modification is allowed by the action. For example, you can disable a warning or informational in level 0, or you can change an error in level 0 to a fatal, and so on. (See above restrictions on modifying individual messages.) Message-level names are: LEVEL1 Important messages. These are less important than the level 0 core messages, because messages in this group are not displayed if #pragma nostandard is active. LEVEL2 Moderately important messages. LEVEL3 Less important messages. LEVEL3 is the default message level. LEVEL4 Useful check/portable messages. LEVEL5 Not so useful check/portable messages. LEVEL6 Additional "noisy" messages. Enabling a level also enables all the messages in the levels below it. So enabling LEVEL3 messages also enables messages in LEVEL2 and LEVEL1. Disabling a level also disables all the messages in the levels above it. So disabling LEVEL4 messages also disables messages in LEVEL5 and LEVEL6. o A comma-separated list of message identifiers, group names, and messages levels, freely mixed, enclosed in parentheses. The default is /WARNINGS. This enables all diagnostic messages for the selected compiler mode. Notes: o If a message is on both the enabled and disabled list, it is disabled. o If a message is on both the EMIT_ONCE and the EMIT_ALWAYS list, it is considered to be on the EMIT_ONCE list. o If a message is on more than one of the FATALS, ERRORS, WARNINGS, or INFORMATIONALS lists, the message is given the least severe level. o The NOINFORMATIONALS option is not the negation of INFORMATIONALS=msg-list. It is valid to say: /WARN=(INFORMATIONALS=message_list,NOINFORMATIONALS) This has the effect of making the messages on the message_list informationals, and causing the compiler to suppress any informational messages.

Message_Groups

HP C compiler message groups The following tables list all compiler messages by message group. For a description of each compiler message, see the Messages section of this online help.

Additional Information on:

  • 64BIT
  • 64BITPOINTERS
  • ALIGNMENT
  • C_TO_CXX
  • CDD
  • DEFUNCT
  • NEWC99
  • NOC89
  • NOC99
  • OBSOLESCENT
  • OVERFLOW
  • PERFORMANCE
  • PORTABLE
  • PREPROCESSOR
  • QUESTCODE
  • RETURNCHECKS
  • UNINIT
  • UNUSED

  • Messages

    Compiler messages - HP C V7.1 Some compiler messages substitute information from the program into the message text. In this online help, the portion of the text to be substituted is shown in angle brackets (<>). Often, the same message is issued in different contexts within a program. In this online help, the message context is indicated by the word <context> within the message. The actual message issued by the compiler will contain one of the following phrases substituted for <context>: In this declaration, In the initializer for In the declaration of "<name>", In the definition of the function "<name>", In the declaration of an unnamed object, In this statement, You can control the messages issued with the /[NO]WARNINGS command line qualifier or the #pragma message preprocessor directive. Note that some messages are not produced directly by the compiler; they are produced by other software that the compiler uses. Messages not produced directly by the compiler are not included in this list and can not be controlled by /[NO]WARNINGS or #pragma message.

    Additional Information on:

  • ABSTRACTDCL
  • ADDRARRAY
  • ADDRCONSTEXT
  • ADDRESSOFVOID
  • ADDRSUBCONST
  • ALIGNCONFLICT
  • ALIGNCONFLICT1
  • ALIGNCONST
  • ALIGNEXT
  • ALIGNPOP
  • ALREADYTLS
  • ANSIALIASCAST
  • ARGADDR
  • ARGLISGTR255
  • ARGLISTOOLONG
  • ARGSIZE
  • ARRAYBRACE
  • ARRAYLIMITSUP
  • ARRAYOVERFLOW
  • ARRNOTLVALUE
  • ASMCOMEXP
  • ASMENDEXP
  • ASMFIMMDOTS
  • ASMFREGEXP
  • ASMHINTDOTS
  • ASMICONEXP
  • ASMIDEXP
  • ASMINSTEXP
  • ASMLABEXP
  • ASMLABMULDEF
  • ASMLABUNDEF
  • ASMLDGPDOTS
  • ASMLPAREXP
  • ASMNOTAVAIL
  • ASMNOTINST
  • ASMNOTREG
  • ASMNOTSUP
  • ASMPALTRUNC
  • ASMRAWREG
  • ASMREGEXP
  • ASMREGOVRLAPSC
  • ASMRPAREXP
  • ASMSYMDOTS
  • ASMUNKNOWNARCH
  • ASMUNKSETOPT
  • ASSERTFAIL
  • ASSERTION
  • ASSIGNEXT
  • ASSUMEONEELEM
  • AUTOALIGN
  • AUTOEXTERNAL
  • BADALIAS
  • BADALIGN
  • BADANSIALIAS
  • BADBOUNDCHK
  • BADBOUNDS
  • BADBREAK
  • BADC99PRAGOP
  • BADCHARSINHDR
  • BADCMMNTPSTNG
  • BADCOMLITTYPE
  • BADCOMPLEXTYPE
  • BADCONDIT
  • BADCONSTEXPR
  • BADCONTINUE
  • BADCONVSPEC
  • BADDCL
  • BADDECLSPEC
  • BADDEFARG
  • BADENUM
  • BADENUMREDECL
  • BADEXPR
  • BADFATCOMMENT
  • BADFBDAT
  • BADFBFILE
  • BADFBTYP
  • BADFLOATTYPE
  • BADFORMALPARM
  • BADFORSTOCLS
  • BADFUNCSTOCLS
  • BADGLOBALTYPE
  • BADHEADERNM
  • BADHEXCONST
  • BADIDENTUCN
  • BADIFDEF
  • BADIFNDEFARG
  • BADINCLDIR
  • BADINCLDIRSIZE
  • BADINCLUDE
  • BADLINEDIR
  • BADLINEDIRTV
  • BADLINKREG
  • BADLINNUM
  • BADLOCALE
  • BADMACROINLN
  • BADMACRONAME
  • BADMBCOMMENT
  • BADMCRORECURS
  • BADMEMBER
  • BADMEMOFF
  • BADMEMTYP
  • BADMODULEID
  • BADMULTIBYTE
  • BADNUM
  • BADOCTCONST
  • BADOPCCAP
  • BADOPENBRACE
  • BADPARSEDECL
  • BADPARSEPARAM
  • BADPPDIR
  • BADPRAGMAARG
  • BADPRAGMAARG1
  • BADPRAGMALINK
  • BADPRAGNAMES
  • BADPREFIX
  • BADPROTYP
  • BADPTRARITH
  • BADREGISTER
  • BADRETURNTYPE
  • BADSEVERITY
  • BADSTATICCVT
  • BADSTDLINKAGE
  • BADSTMT
  • BADSTMT1
  • BADSUBSCRIPT
  • BADTARGMACRO
  • BADTKEN
  • BADUNKNOWNVLA
  • BADUNROLLVAL
  • BADUSELINK
  • BADUSERMACRO
  • BADVASTART
  • BIFENABLED
  • BIFNEEDSSTD
  • BIFNOTAVAIL
  • BIFPROTO
  • BITARRAY
  • BITBADREP
  • BITCONSTSIGN
  • BITFIELDSIZE
  • BITNOTINT
  • BITWIDTH
  • BITWIDTHTYP
  • BLOCKEXTVLA
  • BLOCKINL
  • BLTINARGCNT
  • BLTINIMPLRET
  • BOOLEXT
  • BOOLNA
  • BOUNDADJ
  • BOUNDNOTINT
  • BUGCHECK
  • CALLNEEDSFUNC
  • CANNOTREDEF
  • CANNOTUNDEF
  • CANTDISABLE
  • CANTMKRPSTORY
  • CDDATTR
  • CDDBADID
  • CDDEXT
  • CDDPATH
  • CDDTOODEEP
  • CHARCONST
  • CHAROVERFL
  • CHKEXPAND
  • CHKINIT
  • CHKOPT
  • CLASSNOINIT
  • CLOSBRACKET
  • CLOSEBRACE
  • CLOSECOMMENT
  • CLOSEPAREN
  • CMPPTRFUNVOID
  • COLMAJOR
  • COMMANDMACRO
  • COMPILERBUG
  • COMPLEXEXT
  • COMPLEXNA
  • COMPLEXNA1
  • CONFLICTHINTS
  • CONLINKREG
  • CONPSECTATTR
  • CONSTCOMPLIT
  • CONSTFOLDNS
  • CONSTFUNC
  • CONSTINWRT
  • CONSTNOINIT
  • CONSTSTOCLS
  • CONTFILE
  • CONTROLASSIGN
  • CONVARASLIT
  • CRXCOND
  • CVIDXOVFL
  • CVTDIFTYPES
  • CVTU32TO64
  • CXXCOMMENT
  • CXXKEYWORD
  • CXXPRAGMANA
  • DCLMISMATLNK
  • DCLMISMATLNK0
  • DCLMISMATLNK1
  • DCLMISMATLNK2
  • DCLMISMATLNK3
  • DCLMISMATLNK4
  • DCLMISMATLNK5
  • DCLMISMATLNK6
  • DECCONSTLARGE
  • DECLAFTERSTMT
  • DECLARATOR
  • DECLINFOR
  • DECLSPECEXT
  • DEFINOTHER
  • DEFINOTHER1
  • DEFINOTHER2
  • DEFINOTHER3
  • DEFPARMTYPE
  • DEFRETURNTYPE
  • DESIGBADARR
  • DESIGBADCOMP
  • DESIGBADIND
  • DESIGBADIND1
  • DESIGNATIONNA
  • DESIGNATORUSE
  • DESIGNOMEMB
  • DESIGSCALAR
  • DIFFEXMODEL
  • DIFFTYPEQUALS
  • DIRECTVNOCPP
  • DISREDECL
  • DOLLARID
  • DONOTAPPLY
  • DUPCASE
  • DUPDEFAULT
  • DUPENUM
  • DUPEXTERN
  • DUPLABEL
  • DUPLINK
  • DUPLPRAGASS
  • DUPPARM
  • DUPSTATIC
  • DUPSTORCLS
  • DUPTYPEDEF
  • DUPTYPESPEC
  • DUPTYPQUAL
  • ELIFIGNORED
  • ELLIPSEARG
  • ELLIPSEPARM
  • ELLIPSISEND
  • ELSEIGNORED
  • EMBEDCOMMENT
  • EMPTYCHARCONST
  • EMPTYFILE
  • EMPTYINIT
  • EMPTYOBJ
  • EMPTYSTRUCT
  • ENUM16BIT
  • ENUMCALC
  • ENUMINIT
  • ENUMRANGE
  • ENUMSANDINT
  • ENUMSNOTCOMPAT
  • ENUMUSED
  • ENVIRSTKDIRTY
  • ERRORLIM
  • ERRORMESSAGE
  • ESCOVERFL
  • EXPANDEDDEFINED
  • EXPNOTRES
  • EXPRCVTINT
  • EXPRNOTINT
  • EXPRNOTUSED
  • EXTENDTYPE
  • EXTERNINIT
  • EXTERNPOP
  • EXTPREAFTER
  • EXTPREAGAIN
  • EXTPRENODECL
  • EXTRABRACES
  • EXTRAMODULE
  • EXTRAPRAGARGS
  • EXTRASEMI
  • FALLOFFEND
  • FBFILENOTFOUND
  • FILECLOSE
  • FILENOTFOUND
  • FILEREAD
  • FILESCOPEVLA
  • FINBRANCH
  • FLEXARRAYELEM
  • FLEXARRAYMEM
  • FLOATCONSQUAL
  • FLOATCONST
  • FLOATERR
  • FLOATOVERFL
  • FLOATTOINT
  • FMTNOTSTR
  • FNAMETOOLONG
  • FORMATATTR
  • FOUNDCR
  • FREGNEEDSIEEE
  • FUNCELEMENT
  • FUNCIDLIS
  • FUNCINIT
  • FUNCMEM
  • FUNCMIXPTR
  • FUNCNOTDEF
  • FUNCNOTFUNC
  • FUNCREDECL
  • FUNCSTORCLS
  • FUNCSTORMOD
  • FUNCSTRCLS
  • FUTUREKEYWD2
  • FUTUREKEYWORD
  • GBLOUTSIDEINT
  • GBLREFINIT
  • GCCINLINE
  • GEMARGSIZE
  • GLOBALEXT
  • GOTSZOVFL
  • HEXOCTSIGN
  • HEXOCTUNSIGN
  • HINTNOTFUNC
  • HINTTOOBIG
  • IDEXPECTED
  • IDINPARENSEXT
  • IDPACKPOPPRAG
  • IEEEASSUMED
  • IEEEASSUMED1
  • IGNORECALLVAL
  • IGNOREEXTRA
  • IGNORETAG
  • IGNORETOKENS
  • IGNORSYSREG
  • IMAGINARYNA
  • IMPFNCFALLOFF
  • IMPFNCMSSNGRET
  • IMPLICITFUNC
  • INCARGTYP
  • INCARRAYPARM
  • INCARRAYPARM1
  • INCLUDENOPEA
  • INCLUDEOPEN
  • INCLUDEPROEPI
  • INCOMPARRY
  • INCOMPARRY1
  • INCOMPARRY2
  • INCOMPCALL
  • INCOMPDEREF
  • INCOMPELINIT
  • INCOMPELMNT
  • INCOMPMEM
  • INCOMPNOLINK
  • INCOMPPARM
  • INCOMPRETURN
  • INCOMPSTAT
  • INCOMPSTATARR
  • INCOMPTENT
  • INCOMPVALUE
  • INCOMPVOID
  • INCONSASSFUN
  • INITCONFLICT
  • INITOVERLAP1
  • INITVLA
  • INLINEIG
  • INLINESTOCLSMOD
  • INPTRTYPE
  • INSUFALN
  • INTBADLINKAGE
  • INTCONCASTSGN
  • INTCONCASTTRU
  • INTCONST
  • INTCONSTSIGN
  • INTCONSTSIGNED
  • INTCONSTTOOBIG
  • INTCONSTTRUNC
  • INTCONSTUNSIGN
  • INTERNALPRAGMA
  • INTIMPLIED
  • INTOVERFL
  • INTRINSICCALL
  • INTRINSICDECL
  • INTRINSICDECLER
  • INTRINSICINT
  • INTUNDFUN
  • INVALIDARG
  • INVALIDSTR
  • INVALTOKEN
  • INVCPPINARGS
  • INVDUPENUM
  • INVNOMEMPRAG
  • INVPACKPRAG
  • INVPPDIRPEA
  • INVSTATIC1
  • INVSTATIC3
  • INVSTATIC4
  • INVSTATIC5
  • INVSTATIC6
  • IVDEPNOFOR
  • KEYCOMB
  • KNRFUNC
  • LABELWOSTMT
  • LCRXCOND
  • LDCOMPLEXNYI
  • LEXNESTPAR
  • LISTOPEN
  • LOCALEXTINI
  • LONGDEBUG
  • LONGDOUBLENY1
  • LONGDOUBLENYI
  • LONGEXTERN
  • LONGFLOATEXT
  • LONGLINE
  • LONGLONGSUFX
  • LONGLONGTYPE
  • LONGMODULEID
  • LONGMODULESTR
  • LONGPREFIX
  • LONGPSECT
  • LONGTOKEN
  • LVALUECAST
  • MACROREDEF
  • MACROREDEFIN
  • MAINNOTINT
  • MAINPARM
  • MAINPROGEXT
  • MAPREGIGNORED
  • MATHERRNO
  • MAYHIDELOSS
  • MAYLOSEDATA
  • MAYLOSEDATA2
  • MECHMISMATCH
  • MEMBERVLA
  • MISALGNDMEM
  • MISALGNDSTRCT
  • MISDEFARG
  • MISDEFPAR
  • MISMATPARAM
  • MISMATPRSRET
  • MISMATTHREAD
  • MISPARAMCOUNT
  • MISSINGCASE
  • MISSINGCOMMA
  • MISSINGFUNC
  • MISSINGLABEL
  • MISSINGRETURN
  • MISSINGTYPE
  • MISSPELLDEF
  • MIXALLOCAVLA
  • MIXALLOCAVLAV
  • MIXFUNCVOID
  • MIXINLINE
  • MIXLINKAGE
  • MIXLINKAGE1
  • MIXOLDNEW
  • MIXSTORCLS
  • MIXVLAALLOCA
  • MIXVLAALLOCAV
  • MODNOIDSTR
  • MODSTORCLS
  • MODULEFIRST
  • MSGPOP
  • MSGSFRMEXLCODE
  • MULTICHAR
  • MULTILINK
  • MULTILINKREG
  • MULTIMAIN
  • MULTIPSECTNAME
  • NAMESHORTENED
  • NAMESLOWER1
  • NEEDADDRCONT
  • NEEDARITH
  • NEEDCONSTEXPR
  • NEEDCONSTEXT
  • NEEDDFLOAT
  • NEEDFUNCPTR
  • NEEDGFLOAT
  • NEEDIEEE
  • NEEDIEEE1
  • NEEDINTEXPR
  • NEEDLVALUE
  • NEEDMEMBER
  • NEEDNONBLTIN
  • NEEDNONCONST
  • NEEDNONVOID
  • NEEDPOINTER
  • NEEDPTROBJ
  • NEEDSCALAR
  • NEEDSCALARTYP
  • NEEDSIMPLEASM
  • NEEDSTRCONST
  • NEEDSTRUCT
  • NEGATIVEHINT
  • NESTEDCOMMENT
  • NESTEDENUM
  • NESTEDTYPE
  • NESTINCL
  • NEWLOCALE
  • NLCHAR
  • NLHEADER
  • NLSTRING
  • NOADD
  • NOBIFDISABLE
  • NOBITFIELD
  • NOCASEHERE
  • NOCDDHERE
  • NOCOLON
  • NOCOLONINEXPR
  • NOCOMMA
  • NOCONDEXPR
  • NOCONVERT
  • NOCONVERTCLS
  • NODCL
  • NODEFAULTHERE
  • NOENDIF
  • NOEQUAL
  • NOEQUALITY
  • NOEXCEPTFLTR
  • NOFBDAT
  • NOFBFIL
  • NOFBOPT
  • NOFBRTN
  • NOFIFILE
  • NOFNTPDEFDECL
  • NOFORMALPARM
  • NOFUNC
  • NOFUNC1
  • NOIDFOUND
  • NOIDINPACKPOP
  • NOINCLFILE
  • NOINCLFILEF
  • NOINCLUDEARG
  • NOINIT
  • NOINLFUNC
  • NOINLINEM
  • NOINLINEREF
  • NOINLINEST
  • NOLEAVETARG
  • NOLEFTOPERND
  • NOLINKAGE
  • NOLONGLONG
  • NOMACRONAME
  • NOMAINUFLO
  • NOMAPPOSSIBLE
  • NONAMEMEMBERS
  • NONATOMIC
  • NONEWTYPE
  • NONGRNACC
  • NONINTENUM
  • NONINTENUMCON
  • NONINTENUMCON1
  • NONLBEFOREEOF
  • NONMULTALIGN
  • NONOCTAL
  • NONPORTDEFINED
  • NONPORTLINEDIR
  • NONSTANDCAST
  • NONULINIT
  • NOOPERAND
  • NOOPERANDS
  • NOPARENARGLST
  • NOPARM
  • NOPARMLIST
  • NOPRAGARG
  • NOPSECT
  • NOREGAVAIL
  • NORELATIONAL
  • NORETNONVOID
  • NORETURNVAL
  • NORETURNVAL1
  • NORETVAL
  • NORGHTPAREN
  • NORIGHTOPERND
  • NORIGHTPAREN
  • NOSEHHAND
  • NOSEMI
  • NOSEMI1
  • NOSEMISTRUCT
  • NOSFILE
  • NOSHAREEXT
  • NOSHRINSHR
  • NOSTRING
  • NOSUBTRACT
  • NOTADDRCAST
  • NOTAREDUCTION
  • NOTCOMPAT
  • NOTCOMPATIMP
  • NOTCOMPFUNC
  • NOTCONSTQUAL
  • NOTEXPECTING
  • NOTINCRTL
  • NOTINTRINSIC
  • NOTLOCALPARM
  • NOTONEORZERO
  • NOTPARM
  • NOTPOSINT
  • NOTRESTQUAL
  • NOTRIGHTMOST
  • NOTSCALARCTRL
  • NOTTYPEDEF
  • NOTUNALQUA
  • NOTVOLQUAL
  • NOTYPES
  • NOUNIQFORMALS
  • NOWHILE
  • NOWRTWRITTEN
  • OBJECTTOOBIG
  • OKCPPINARGS
  • OPENBRACE
  • OPENCOMMENT
  • OPENPAREN
  • OPTIMIZEPOP
  • OPTLEVEL
  • OTHERDECLUSED
  • OTHERMEMBER
  • OUTARGPREC
  • OUTARGWIDTH
  • OUTFLOATINT
  • OUTSTRINGTYPE
  • OUTTOOFEW
  • OUTTOOMANY
  • OUTTYPELEN
  • OUTVARORDER
  • PACKSTACKPOP
  • PARAMREDECL
  • PARENLITERAL
  • PARMINCOMP
  • PARMINIT
  • PARMSTORCLS
  • PARMSTORMOD
  • PARMTYPLIST
  • PARNOIDENT
  • PDBOPERR
  • PDBTYPERR
  • PDOINDEXNOTPRIV
  • PDONEINSTATIC
  • PDONENOTINPDO
  • PLUSWSTOCLS
  • POINTERINTCAST
  • POPMISMATCH
  • PRAGIGNORE
  • PRAGMA
  • PRAGMAIDENT
  • PRAGMAINBLK
  • PRAGMAMOD
  • PRAGMAOPTDUP
  • PRAGMAOPTLVL
  • PRAGMAOPTSPEC
  • PRAGMAOPTZERO
  • PREOPTE
  • PREOPTW
  • PREPROCOUT
  • PRIVATENOTSHARE
  • PROMOTMATCH
  • PROMOTMATCHW
  • PROTOF
  • PROTOSCOPE
  • PROTOSCOPE2
  • PROTOSCOPE3
  • PROTOSTATIC
  • PROTOTAG
  • PROTOTYPEDEF
  • PROTOVLA
  • PSECTFIRST
  • PSECTTOOLONG
  • PTRINTTOLONG
  • PTRLONGTOINT
  • PTRMISMATCH
  • PTRMISMATCH1
  • QUALAFTCOMMA
  • QUALFUNCRET
  • QUALISPTR
  • QUALNA
  • QUALNOTUS
  • QUESTCOMPARE
  • QUESTCOMPARE1
  • QUESTCOMPARE2
  • READONLYEXT
  • REDECLNOPARAM
  • REDEF
  • REDEFSTRUCT
  • REDEFTAG
  • REDEFUNION
  • REFBEFORETLS
  • REGCONFLICT
  • REGNOSHARE
  • RELOCALIGNMENT
  • RESMISMATCH
  • RESTRICTEXT
  • RESTRICTEXT1
  • RESTRICTEXT2
  • RESTRICTNOP
  • RETLOCALADDR
  • RETRYCONV
  • RETRYNOTAVAIL
  • RETVALTOOBIG
  • RIGHTSHIFTOVR
  • RTEXCEPT
  • RTLMAPNOTFOUND
  • RTLMISMATCH
  • SAMEASTYPEDEF
  • SCACALL
  • SCAID2LONG
  • SCALEFACTOR
  • SCAOVFLO
  • SEQUENCEEXT
  • SESEMULTIEXITS
  • SESEMULTIPREDS
  • SESEVFLOW
  • SHARECONST
  • SHIFTCOUNT
  • SHORTCIRCUIT
  • SHOWMAPLINKAGE
  • SIGNEDKNOWN
  • SIGNEDMEMBER
  • SIMPLEMESSAGE
  • SIZEBIT
  • SIZEINCOMP
  • SIZEINCOMPTYP
  • SIZFUNVOIDTYP
  • STACKPOP
  • STATICIFLOAT
  • STATICVLA
  • STATINITWARN
  • STDARG
  • STKALLEXC
  • STOALNERR
  • STONOTFIRST
  • STORCLSDCL
  • STOREBIF
  • STOREQEXC
  • STORISSTAT
  • STORMODDCL
  • STRCTPADDING
  • STRINGCONST
  • STRUCTBRACE
  • STRUCTLIMITSUP
  • STRUCTOVERFLOW
  • SUBINVALIDCHR
  • SUBINVALIDSTR
  • SUBSCRBOUNDS
  • SUBSCRBOUNDS1
  • SUBSCRBOUNDS2
  • SWAPBIF
  • SWITCHLONG
  • SYSREGUSED
  • SYSTEM
  • TAGDIFFER
  • TAGORBRACE
  • TENTREDEF
  • TEXTARRAY
  • TEXTARRAYN
  • TEXTCHAR
  • TEXTMODULE
  • THREADFUNC
  • THREADNYI
  • THREADSTO1
  • THREADSTO2
  • TLSANDSTATIC
  • TOOFEWACTUALS
  • TOOFEWARGS
  • TOOFEWARGSO
  • TOOLONG
  • TOOMANY
  • TOOMANYACTLS
  • TOOMANYARGS
  • TOOMANYARGSO
  • TOOMANYERR
  • TOOMANYGATES
  • TOOMANYTOKENS
  • TOOMANYTXTLIB
  • TOOMNYREL
  • TRAILCOMMA
  • TRUNCFLTASN
  • TRUNCFLTINT
  • TRUNCINTASN
  • TRUNCINTCAST
  • TRUNCLONGCAST
  • TRUNCLONGINT
  • TUNEOVERRIDE
  • TYPEALIGN
  • TYPECONFLICT
  • TYPEDEFFUNC
  • TYPEDEFINIT
  • TYPEDEFNA
  • TYPEDEFNOTDEF
  • TYPEEXPR
  • TYPEOFEXT
  • TYPQUALNOT
  • TYPQUALNOT2
  • TYPQUALNOT3
  • TYPQUALNOT4
  • UABORT
  • UCNICONVOPN
  • UCNNOMAP
  • UCNUNSUPP
  • UCNUSED
  • UNALIGNEDFUNC
  • UNALIGNEXT
  • UNAVAILPRAGMA
  • UNAVOLACC
  • UNCALLED
  • UNDECLARED
  • UNDECLFUN
  • UNDECLVAR
  • UNDEFENUM
  • UNDEFESCAP
  • UNDEFINEDTYPE
  • UNDEFVARFETCH
  • UNDEFVARMOD
  • UNDERFLOW
  • UNINIT1
  • UNINIT2
  • UNINIT3
  • UNINIT4
  • UNINIT5
  • UNIONBRACE
  • UNKEXTMOD
  • UNKINTRIN
  • UNKMSGCMD
  • UNKMSGID
  • UNKNOWNLINK
  • UNKNOWNMACRO
  • UNKNOWNPRAGMA
  • UNKNOWNPRGMA
  • UNKPSECTATTR
  • UNMATCHENDIF
  • UNNAMEDMEM
  • UNNAMEPARM
  • UNNECCDD
  • UNNECINCL
  • UNREACHCODE
  • UNREFADECL
  • UNREFDECL
  • UNREFLABEL
  • UNREFSDECL
  • UNREFSFUNC
  • UNREFTYP
  • UNRLINKATTR
  • UNSIGNEDPRES
  • UNSTRUCTMEM
  • UNSUPCONV
  • UNSUPCONVSPEC
  • UNSUPCONVV
  • UNSUPIEEE
  • UNSUPPTYPE
  • UNUSEDCDD
  • UNUSEDINCL
  • UNUSEDTOP
  • USELESSALIGN
  • USELESSSTOMOD
  • USELESSTYPED
  • USELESSTYPEQUAL
  • VAARGSBODY
  • VAARGSFORMAL
  • VALUENOTSUP
  • VALUEPRES
  • VARIANTDCL
  • VARIANTDUP
  • VARIANTEXT
  • VARIANTTAG
  • VARNOMEM
  • VERTICALSPDIR
  • VLAEXTENSION
  • VOIDRETURN
  • VOIDRETURN1
  • VOLATILEFUNC
  • WCHARCAT
  • WRTINNOWRT
  • XFERINTOVLA
  • XTRALARGE
  • ZERODIV
  • ZERODIVIDE
  • ZEROELEMENTS
  • ZEROELEMENTS1

  • Language_topics

    HP C language topics

    Additional Information on:

  • Block
  • Valid_File_Specifications
  • Data_Types
  • Declarations
  • Functions
  • Builtin_Functions
  • Variable_Length_Argument_Lists
  • Preprocessor
  • Predefined_Macros
  • Predeclared_Identifiers
  • Statements
  • Storage_Classes
  • Type_Qualifiers
  • Storage_Class_Modifiers

  • Link_libraries

    The following describes how to link with the HP C Run-Time Library (RTL). Linking with the Shareable Image: On OpenVMS Alpha systems, most linking needs should be satisfied by using the HP C RTL shareable image ALPHA$LIBRARY:DECC$SHR.EXE, which the linker automatically finds through IMAGELIB.OLB. Because DECC$SHR.EXE has only prefixed names (no unprefixed names), to successfully link against it, make sure you cause prefixing to occur for all HP C RTL entry points. Do this by compiling in one of two ways: 1. Compile with the /PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES qualifier. 2. Compile with the /STANDARD=VAXC or /STANDARD=COMMON qualifier. You get /PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES as the default. After making sure that all HP C RTL entry points are prefixed, link against the shareable image using the LINK command. For example: $ CC/DECC/PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES PROG1 $ LINK PROG1 The linker automatically searches IMAGELIB.OLB to find DECC$SHR.EXE, and resolves all C RTL references. Linking with the Object Libraries: The HP C RTL object libraries on OpenVMS Alpha systems are used solely for linking programs compiled without /PREFIX=ALL. Please note that these object libraries do not exist on OpenVMS I64 systems. On OpenVMS Alpha systems, the HP C RTL provides the following object libraries in the ALPHA$LIBRARY directory: o Object library included in STARLET.OLB o VAXCCURSE.OLB o VAXCRTL.OLB o VAXCRTLD.OLB o VAXCRTLT.OLB o VAXCRTLX.OLB o VAXCRTLDX.OLB o VAXCRTLTX.OLB The object library included in STARLET.OLB contains all code for all functions. Each external name in this library has a DECC$ prefix, and, therefore, has an OpenVMS conformant name space (a requirement for inclusion in STARLET.OLB). The object library VAXCCURSE.OLB, which provides access to the Curses functions, contains unprefixed entry points that vector to the appropriate prefixed entry points. The object libraries VAXCRTL.OLB, VAXCRTLD.OLB, VAXCRTLT.OLB, VAXCRTLX.OLB, VAXCRTLDX.OLB, and VAXCRTLTX.OLB also contain nonprefixed entry points that vector to the appropriate code in STARLET.OLB, depending on the floating-point type specified by the object library used: o VAXCRTL.OLB contains all HP C RTL routine name entry points as well as VAX G-floating double-precision, floating-point entry points. o VAXCRTLD.OLB contains a limited support of VAX D-floating double-precision floating-point entry points. o VAXCRTLT.OLB contains IEEE T-floating double-precision floating-point entry points. o VAXCRTLX.OLB contains G_floating support and support for the /L_DOUBLE_SIZE=128 compiler qualifier. o VAXCRTLDX.OLB contains D_floating support and support for the /L_DOUBLE_SIZE=128 compiler qualifier. o VAXCRTLTX.OLB contains IEEE T_floating support and support for the /L_DOUBLE_SIZE=128 compiler qualifier. Note that, as with VAX C, if you specify more than one object library on the LINK command, you must do so in the following order: 1. VAXCCURSE.OLB 2. VAXCRTLD.OLB, VAXCRTLT.OLB, VAXCRTLX.OLB, VAXCRTLDX.OLB, or VAXCRTLTX.OLB 3. VAXCRTL.OLB In the default mode of the compiler (/STANDARD=ANSI89), all calls to ANSI C standard library routines are automatically prefixed with DECC$. With the /PREFIX_LIBRARY_ENTRIES qualifier, you can change this to prefix all HP C RTL names with DECC$, or to not prefix any HP C RTL names. Other options are also available for this qualifer. See the /PREFIX_LIBRARY_ENTRIES qualifier for more information. When using the HP C RTL object libraries and linking with /NOSYSSHR, if calls to the HP C RTL routines are prefixed with DECC$, then the modules in STARLET.OLB are the only ones you need to link against. Since STARLET.OLB is automatically searched by the linker (unless the link qualifier /NOSYSLIB is used), all prefixed RTL external names are automatically resolved. If calls to the HP C RTL routines are not prefixed, then you need to explicitly link against VAXCRTL.OLB, VAXCRTLD.OLB, VAXCRTLT.OLB, VAXCRTLX.OLB, VAXCRTLDX.OLB, or VAXCRTLTX.OLB depending on which floating-point types you need. If you are linking with /NOSYSSHR, prefixed HP C RTL entry points are resolved in STARLET.OLB. If you are not linking with /NOSYSSHR, prefixed HP C RTL entry points are resolved in DECC$SHR.EXE.

    Additional Information on:

  • Examples

  • Run-time_functions

    For help on the C run-time library (C RTL) functions supplied with your OpenVMS operating system, enter the following: $ HELP CRTL Also see the HP C Run-Time Library Reference Manual for OpenVMS Systems.

    Release_Notes

    The release notes for HP C are contained in the following files: SYS$HELP:CC.RELEASE_NOTES SYS$HELP:CC_RELEASE_NOTES.PS

    Socket_Routines

    For help on the socket routines used for writing Internet application programs for the TCP/IP Services protocol, enter the following: $ HELP TCPIP_Services Programming_Interfaces Sockets_API Also see the HP TCP/IP Services for OpenVMS product documentation.