VMS Help CC *Conan The Librarian (sorry for the slow response - running on an old VAX) |
Online Help for COMPAQ C V6.4 The CC command invokes the Compaq C compiler to compile C source programs. The syntax is: CC file-spec,... +library-file-spec/LIBRARY... An HTML version of this online help is available in: SYS$COMMON:[SYSHLP.CC$VAX_HELP_064]
1 - Command Parameters |
file-spec,... One or more Compaq 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, Compaq 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, Compaq C assumes the .TLB default file extension.
2 - 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 /ASSUME=(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 /ERROR_LIMIT[=number] o /EXTERN_MODEL=option o /FLOAT=option o /[NO]G_FLOAT o /[NO]INCLUDE_DIRECTORY=(pathname[,...]) o /LIBRARY o /[NO]LINE_DIRECTIVES o /[NO]LIST[=file-spec] o /[NO]MACHINE_CODE[=option] 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 /PRECISION={SINGLE | DOUBLE} o /[NO]PREFIX_LIBRARY_ENTRIES o /[NO]PREPROCESS_ONLY[=filename] o /[NO]PROTOTYPE[=(option[,...])] o /REPOSITORY=option o /[NO]SHARE_GLOBALS o /SHOW[=(option[,...])] o /[NO]STANDARD=(option) o /[NO]UNDEFINE=(identifier[,...]) o /[NO]UNSIGNED_CHAR o /VAXC o /[NO]VERSION o /[NO]WARNINGS[=(option[,...])]
3 - /ACCEPT
/ACCEPT=(option[,option]) Allows the compiler to accept C language syntax that it might not normally accept. Compaq 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_ANSI89 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]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_ANSI89, the default is: /ACCEPT=(VAXC_KEYWORDS,C99_KEYWORDS,NOGCCINLINE) For /STANDARD=VAXC, the default is: /ACCEPT=(VAXC_KEYWORDS,NOC99_KEYWORDS,NOGCCINLINE) In all other modes, the default is: /ACCEPT=(NOVAXC_KEYWORDS,NOC99_KEYWORDS,NOGCCINLINE)
4 - /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.
5 - /ASSUME
/ASSUME=(option[,...]) Controls compiler assumptions. You may select the following options: [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]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.
6 - /COMMENTS
/COMMENTS={AS_IS | SPACE} /COMMENTS=SPACE (D) (ANSI89, RELAXED_ANSI89, 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 Compaq 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_ANSI89, and MIA compiler modes. The default is /NOCOMMENTS for all other compiler modes. Specifying just /COMMENTS defaults to /COMMENTS=AS_IS.
7 - /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.
8 - /DEBUG
/DEBUG[=(option[,...])] /DEBUG=(TRACEBACK,NOINLINE,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). INLINE Causes a STEP command to STEP/INTO an inlined function call. NOINLINE Causes a STEP command to STEP/OVER an inlined function call. 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,NOINLINE,NOSYMBOLS).
9 - /DECC
The CC command is used to invoke either the VAX C or Compaq C compiler. If your system has a VAX C compiler already installed on it, the Compaq C installation procedure provides the option of specifying which compiler will be invoked by default when just the CC command verb is used. To invoke the compiler that is not the default, use the CC command with the appropriate qualifier: CC/DECC for the Compaq C compiler, or CC/VAXC for the VAX C compiler. If your system does not already have a VAX C compiler installed on it, the CC command will invoke the Compaq C compiler.
10 - /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.
11 - /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.
12 - /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.
13 - /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 Compaq C is relaxed/refdef with the noshare attribute. This is different from the model used by VAX C, which is common block, share.
14 - /FLOAT
/FLOAT=option Controls the format of floating-point variables. On OpenVMS VAX systems, if you omit both /FLOAT and /G_FLOAT from the command line, double variables are represented in D_FLOAT format (unless /MIA is specified, in which case the default format is G_FLOAT). If you are linking against object-module libraries, a program compiled with G_FLOAT format must be linked with the object library VAXCRTLG.OLB. Options: D_FLOAT Double variables are represented in D_FLOAT format. G_FLOAT Double variables are represented in G_FLOAT format.
15 - /G_FLOAT
/G_FLOAT /NOG_FLOAT Controls the format of floating-point variables. The /[NO]G_FLOAT qualifier is replaced by the /FLOAT qualifier, but is retained for compatibility. If you specify /NOG_FLOAT, double variables are represented in D_floating format. On OpenVMS VAX systems, if you omit both /FLOAT or /G_FLOAT from the command line, double variables are represented in D_FLOAT format (unless /MIA is specified, in which case the default format is G_FLOAT). If you are linking against object-module libraries, a program compiled with G_FLOAT format must be linked with the object library VAXCRTLG.OLB.
16 - /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
17 - /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
18 - /LINE_DIRECTIVES
/LINE_DIRECTIVES (D) /NOLINE_DIRECTIVES Controls whether or not #line directives appear in preprocess output files.
19 - /LIST
/LIST[=file-spec] (Batch default) /NOLIST (Interactive default) Controls whether a listing file is produced. The default output file extension is .LIS. (Note: To suppress compiler messages to the terminal or to a batch log file, use the /SHOW=NOTERMINAL qualifier.)
20 - /MACHINE_CODE
/MACHINE_CODE[=option] /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. You can select the following options: AFTER The machine code produced during compilation prints after the source code listing. BEFORE The machine code prints before the source code listing. INTERSPERSED The lines of machine code print alternately with the lines of source code. The default option is INTERSPERSED.
21 - /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 OpenVMS Alpha systems, the default is /MEMBER_ALIGNMENT. For OpenVMS VAX systems, the default is /NOMEMBER_ALIGNMENT.
22 - /MMS_DEPENDENCIES
/MMS_DEPENDENCIES[=(option[,option)]] /NOMMS_DEPENDENCIES (D) Directs the compiler to produce a dependency file. The format of the dependency file is identical to that on OSF: 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 both 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.
23 - /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=LOWERCASE converts to lowercase. 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 24 characters of the name followed by a 7-character Cyclic Redundancy Check (CRC) computed by looking at the full name. By default, the compiler issues a warning and truncates the name to 31 characters. The /NAMES qualifier does not affect the names of the $CODE and $DATA psects.
24 - /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.
25 - /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.
26 - /OPTIMIZE
/OPTIMIZE[=option] (D) /NOOPTIMIZE Controls whether or not the compiler performs code optimization. /OPTIMIZE has the following options: [NO]DISJOINT Directs the compiler to optimize the generated machine code. [NO]INLINE Specifies whether the compiler is allowed to perform the function inline optimization.
27 - /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_ANSI89 modes.
28 - /PREFIX_LIBRARY_ENTRIES
Controls the Compaq C RTL name prefixing. The Compaq 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 Compaq C RTL name prefixing. The qualifier options are: EXCEPT=(name,...) The names specified are not prefixed. ALL_ENTRIES All Compaq C RTL names are prefixed. ANSI_C89_ENTRIES Only ANSI library names are prefixed. RTL="name" Generates references to the C RTL indicated by the "name" keyword. If no keyword is specified, then references to the Compaq 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. The defaults on both OpenVMS Alpha and VAX systems are: o For /STANDARD=ANSI89, the default is /PREFIX=ANSI_C89_ENTRIES. o Alpha only: For /STANDARD=C99 or /STANDARD=RELAXED_ANSI89, the default is /PREFIX=C99_ENTRIES. o For all other compiler modes, the default is /PREFIX=ALL.
29 - /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.
30 - /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.
31 - /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 Compaq 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 Compaq C and Compaq C++ compilers.
32 - /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. 3. When linking your extern symbols against FORTRAN common blocks, specify /SHARE_GLOBALS to suppress "conflicting attributes for psect" messages, which can otherwise be ignored.
33 - /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]INTERMEDIATE Print/do not print intermediate macro. expansions (D = NOINTERMEDIATE) [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) [NO]TERMINAL Display/do not display compiler messages at the terminal. If NOTERMINAL is specified, only the summary message is displayed. (D = TERMINAL) [NO]TRANSLATION Display/do not display the translation of a UNIX* system file specification to an OpenVMS file specification. (D = NOTRANSLATION) ---------- * UNIX is a trademark of The Open Group.
34 - /STANDARD
/STANDARD=(option) /STANDARD=RELAXED_ANSI89 (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 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. On OpenVMS VAX systems, produces a warning and places the compiler in /STANDARD=REALXED ANSI89 mode. RELAXED_ANSI89 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 Compaq 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 and defines the predefined macro __STDC_VERSION__=199409. 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_ANSI89. 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_ANSI89 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_ANSI89 /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. The default is /NOSTANDARD, which is equivalent to /STANDARD=RELAXED_ANSI89. 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. Compaq C modules compiled in different modes can be linked and executed together.
35 - /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 Compaq 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 Compaq 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.
36 - /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.
37 - /VAXC
The CC command is used to invoke either the VAX C or Compaq C compiler. If your system has a VAX C compiler already installed on it, the Compaq C installation procedure provides the option of specifying which compiler will be invoked by default when just the CC command verb is used. To invoke the compiler that is not the default, use the CC command with the appropriate qualifier: CC/DECC for the Compaq C compiler, or CC/VAXC for the VAX C compiler. If your system does not already have a VAX C compiler installed on it, the CC command will invoke the Compaq C compiler.
38 - /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/DECC/VERSION The default is /NOVERSION.
39 - /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.
40 - Message Groups |
Compaq 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.
40.1 - 64BIT
CVTU32TO64 FUNCMIXPTR LONGLONGSUFX LONGLONGTYPE POINTERINTCAST PRAGIGNORE PTRINTTOLONG PTRLONGTOINT TRUNCLONGCAST TRUNCLONGINT
40.2 - 64BITPOINTERS
POINTERINTCAST
40.3 - ALIGNMENT
ALIGNCONST ALIGNEXT MISALGNDMEM MISALGNDSTRCT NONMULTALIGN UNALIGNEXT
40.4 - C_TO_CXX
CLASSNOINIT CONSTNOINIT CONSTSTOCLS CXXKEYWORD INTIMPLIED KNRFUNC NESTEDENUM NESTEDTYPE NONEWTYPE NONULINIT NOPARMLIST STORCLSDCL STORMODDCL TENTREDEF
40.5 - CDD
CDDEXT TEXTARRAY TEXTARRAYN TEXTCHAR
40.6 - DEFUNCT
DEFPARMTYPE DUPENUM EMBEDCOMMENT LONGFLOATEXT MAINPROGEXT READONLYEXT
40.7 - NEWC99
ADDRCONSTEXT ARRNOTLVALUE BOOLEXT COMPLEXEXT CXXCOMMENT DECLAFTERSTMT DECLINFOR DESIGNATORUSE DOLLARID DUPTYPQUAL FUTUREKEYWD2 FUTUREKEYWORD INCOMPARRY1 INTCONSTSIGNED LONGLONGSUFX LONGLONGTYPE NEEDCONSTEXT RESTRICTEXT2 TRAILCOMMA TYPQUALNOT2 VLAEXTENSION XTRALARGE
40.8 - NOC89
ADDRCONSTEXT ADDRSUBCONST ALIGNEXT ARGADDR ARRNOTLVALUE ASSIGNEXT BADCMMNTPSTNG BADREGISTER BITNOTINT BOOLEXT CDDEXT CMPPTRFUNVOID COMPLEXEXT CONSTCOMPLIT CONSTFUNC CONVARASLIT CXXCOMMENT DECLAFTERSTMT DECLINFOR DECLSPECEXT DESIGNATORUSE DOLLARID DUPENUM DUPTYPEDEF DUPTYPQUAL ELLIPSEARG ELLIPSEPARM EMPTYCHARCONST ENUMSNOTCOMPAT EXPANDEDDEFINED EXTENDTYPE FUNCREDECL FUTUREKEYWD2 FUTUREKEYWORD GLOBALEXT HEXOCTSIGN IDINPARENSEXT INCARRAYPARM1 INCOMPARRY INCOMPARRY1 INCOMPDEREF INLINESTOCLSMOD INTCONSTTOOBIG LABELWOSTMT LONGFLOATEXT LONGLONGSUFX LONGLONGTYPE LVALUECAST MACROREDEF MAINNOTINT MAINPROGEXT MISMATPARAM MISPARAMCOUNT MIXFUNCVOID NEEDCONSTEXT NODCL NONAMEMEMBERS NONOCTAL NONPORTLINEDIR NONSTANDCAST NOSEMISTRUCT NOSHAREEXT NOTADDRCAST OKCPPINARGS PARENLITERAL PRAGMAIDENT PRAGMAMOD PTRMISMATCH1 READONLYEXT RESTRICTEXT RESTRICTEXT1 RESTRICTEXT2 SAMEASTYPEDEF SWITCHLONG TEXTMODULE TRAILCOMMA TYPEDEFNA TYPEOFEXT TYPQUALNOT2 UNALIGNEXT UNDEFENUM UNSIGNEDPRES UNSTRUCTMEM VARIANTEXT VLAEXTENSION VOLATILEFUNC XTRALARGE
40.9 - NOC99
ADDRSUBCONST ALIGNEXT ARGADDR ASSIGNEXT BADCMMNTPSTNG BADREGISTER BITNOTINT CDDEXT CMPPTRFUNVOID CONSTCOMPLIT CONSTFUNC CONVARASLIT DECLSPECEXT DUPENUM DUPTYPEDEF ELLIPSEARG ELLIPSEPARM EMPTYCHARCONST ENUMSNOTCOMPAT EXPANDEDDEFINED EXTENDTYPE FUNCREDECL GLOBALEXT HEXOCTSIGN IDINPARENSEXT INCARRAYPARM1 INCOMPARRY INCOMPDEREF INLINESTOCLSMOD INTCONSTTOOBIG INTCONSTUNSIGN LABELWOSTMT LONGFLOATEXT LVALUECAST MACROREDEF MAINNOTINT MAINPROGEXT MISMATPARAM MISPARAMCOUNT MIXFUNCVOID NODCL NONAMEMEMBERS NONOCTAL NONPORTLINEDIR NONSTANDCAST NOSEMISTRUCT NOSHAREEXT NOTADDRCAST OKCPPINARGS PARENLITERAL PRAGMAIDENT PRAGMAMOD PTRMISMATCH1 READONLYEXT RESTRICTEXT RESTRICTEXT1 SAMEASTYPEDEF SWITCHLONG TEXTMODULE TYPEDEFNA TYPEOFEXT UNALIGNEXT UNDEFENUM UNSIGNEDPRES UNSTRUCTMEM VARIANTEXT VOLATILEFUNC
40.10 - OBSOLESCENT
DEFRETURNTYPE INTIMPLIED KNRFUNC STONOTFIRST
40.11 - OVERFLOW
BITCONSTSIGN INPTRTYPE INTCONCASTSGN INTCONCASTTRU INTCONSTSIGN INTCONSTTRUNC MAYHIDELOSS NONOCTAL OUTSTRINGTYPE OUTTYPELEN RIGHTSHIFTOVR TRUNCFLTASN TRUNCFLTINT TRUNCINTASN TRUNCINTCAST
40.12 - PERFORMANCE
BLTINIMPLRET MISALGNDMEM MISALGNDSTRCT NONMULTALIGN
40.13 - PORTABLE
ADDRCONSTEXT ADDRSUBCONST ALIGNCONST ALIGNEXT ARGADDR ARRNOTLVALUE ASSIGNEXT BADCMMNTPSTNG BADREGISTER BITNOTINT BOOLEXT CDDEXT CMPPTRFUNVOID COMPLEXEXT CONSTCOMPLIT CONSTFUNC CONVARASLIT CXXCOMMENT DECLAFTERSTMT DECLINFOR DECLSPECEXT DESIGNATORUSE DOLLARID DUPENUM DUPSTORCLS DUPTYPEDEF DUPTYPQUAL ELLIPSEARG ELLIPSEPARM EMBEDCOMMENT EMPTYCHARCONST ENUMSANDINT ENUMSNOTCOMPAT EXPANDEDDEFINED EXTENDTYPE FUNCREDECL FUTUREKEYWD2 FUTUREKEYWORD GLOBALEXT HEXOCTSIGN HEXOCTUNSIGN IDINPARENSEXT INCARRAYPARM INCARRAYPARM1 INCOMPARRY INCOMPARRY1 INCOMPDEREF INCOMPELMNT INLINESTOCLSMOD INTCONSTSIGNED INTCONSTTOOBIG INTCONSTUNSIGN LABELWOSTMT LONGFLOATEXT LONGLONGSUFX LONGLONGTYPE LVALUECAST MACROREDEF MAINNOTINT MAINPROGEXT MISMATPARAM MISPARAMCOUNT MIXFUNCVOID MULTICHAR NAMESHORTENED NEEDCONSTEXT NONAMEMEMBERS NONOCTAL NONPORTLINEDIR NONSTANDCAST NOSEMISTRUCT NOSHAREEXT NOTADDRCAST OKCPPINARGS PARENLITERAL PRAGMA PRAGMAIDENT PRAGMAMOD READONLYEXT RESTRICTEXT RESTRICTEXT1 RESTRICTEXT2 SAMEASTYPEDEF SWITCHLONG TEXTMODULE TRAILCOMMA TYPEDEFNA TYPEOFEXT TYPQUALNOT2 UNALIGNEXT UNDEFENUM UNSTRUCTMEM VALUEPRES VARIANTEXT VLAEXTENSION VOLATILEFUNC
40.14 - PREPROCESSOR
BADCMMNTPSTNG CDDEXT EMBEDCOMMENT EXPANDEDDEFINED MACROREDEF NESTINCL NONPORTLINEDIR OKCPPINARGS PRAGMAIDENT PRAGMAMOD TEXTMODULE UNKNOWNMACRO UNNECCDD UNNECINCL UNUSEDCDD UNUSEDINCL UNUSEDTOP VAARGSBODY XTRALARGE
40.15 - QUESTCODE
BADCMMNTPSTNG BADREGISTER BITCONSTSIGN CONSTFUNC CONSTNOINIT CONTROLASSIGN DUPENUM ELLIPSEARG ELLIPSEPARM EMPTYCHARCONST ENUMCALC ENVIRSTKDIRTY EXPRNOTUSED FALLOFFEND FUNCMIXPTR FUNCREDECL IMPFNCFALLOFF IMPFNCMSSNGRET INCOMPDEREF INTCONCASTSGN INTCONCASTTRU INTCONSTSIGN INTCONSTTRUNC INTIMPLIED LVALUECAST MACROREDEF MULTICHAR NESTEDCOMMENT NODCL NONOCTAL NONULINIT NORETURNVAL1 OKCPPINARGS PTRMISMATCH1 QUALFUNCRET QUESTCOMPARE QUESTCOMPARE1 QUESTCOMPARE2 RIGHTSHIFTOVR SAMEASTYPEDEF SHORTCIRCUIT SUBSCRBOUNDS1 SUBSCRBOUNDS2 TYPEDEFNA UNDEFENUM UNDEFESCAP UNINIT2 UNINIT3 UNINIT4 UNINIT5 UNKNOWNMACRO UNREACHCODE VOLATILEFUNC
40.16 - RETURNCHECKS
DEFRETURNTYPE FALLOFFEND IGNORECALLVAL IMPFNCFALLOFF IMPFNCMSSNGRET NORETURNVAL1 QUALFUNCRET
40.17 - UNINIT
UNINIT2 UNINIT3 UNINIT4 UNINIT5
40.18 - UNUSED
CONSTFUNC EXPNOTRES EXPRNOTUSED NESTEDCOMMENT NESTINCL PRAGIGNORE QUALFUNCRET SHORTCIRCUIT UNCALLED UNNECCDD UNNECINCL UNREACHCODE UNREFADECL UNREFDECL UNREFSDECL UNREFSFUNC UNREFTYP UNUSEDCDD UNUSEDINCL UNUSEDTOP VOLATILEFUNC
41 - Messages |
Compiler messages 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.
41.1 - ABSTRACTDCL
Message Invalid abstract declarator. Description An identifier was encountered in an abstract declarator. An abstract declarator is used to specify a type only and must not contain an identifier that specifies a declarator. User Action Correct the abstract declarator.
41.2 - ADDRARRAY
Message <Context> & before array "<expression>" is ignored. Description In certain modes, Compaq C will ignore an address-of operator used on an entire array. This is for compatibility with other compilers that have this behavior. User Action Remove the address-of operator.
41.3 - ADDRCONSTEXT
Message <Context> "<name>" does not have a constant address, but occurs in a context that requires an address constant. This is an extension of the language. Description The C89 standard requires that an initializer for a pointer-type member of an automatic aggregate or union-type object have an initializer that is an address constant. Other C compilers might not successfully compile a program that uses this extension. User Action Be aware of this if you wish to port the program.
41.4 - ADDRSUBCONST
Message <Context> accepting the expression "<expr>" as a constant is a language extension. Description In many cases Compaq C accepts the subtraction of two addresses within the same array or struct/union as a constant. The C standard does not consider such an expression to be a constant. Therefore, this program does not conform to the standard and may be rejected by other compilers. User Action Change the expression to be a constant.
41.5 - ALIGNCONST
Message Integer constant alignment <number> is not necessarily supported on all platforms. Description Although the specified alignment value is valid on this system, it might not be valid on other systems. For example, 16 is a valid alignment value on Alpha systems but would not be valid on VAX systems. User Action Be aware of this potential portability issue.
41.6 - ALIGNEXT
Message _align is a language extension. Description The _align storage class modifier is a language extension of Compaq C. Other C compilers might not successfully compile a program that uses the extension. User Action Be aware of this extension if you wish to port the code.
41.7 - ALIGNPOP
Message This "restore" has underflowed the member alignment's stack. No corresponding "save" was found. Description The member_alignment stack, managed by the #pragma member_alignment and #pragma environment directives, contains more restores than saves. This could signify a coding or logic error in the program. User Action Make sure each restore has a corresponding save.
41.8 - ALREADYTLS
Message The identifier "<name>" has already appeared in an omp threadprivate directive. Description The same identifier appears more than once in a single omp threadprivate directive, or appears in more than one omp threadprivate clause. User Action Remove the duplicate identifiers
41.9 - ANSIALIASCAST
Message <Context> a pointer to <type1> is being cast to a pointer to <type2>. Using ANSI aliasing rules, the compiler may subsequently assume that the two pointer types are pointing to different storage locations. Description The C standard allows a compiler to assume that these two pointer types will point to different storage locations. The compiler will make this assumption whenever ansi aliasing is enabled on the command line, either directly or via another switch. The cast in itself does not violate aliasing rules, e.g. you might cast the pointer value back to an allowed type before you use it to access memory. But the compiler cannot generally determine whether or not you do that. If your code accesses the memory designated by this pointer value using both of these pointer types, you may get unexpected results when ansi aliasing is enabled. User Action Casting through pointer to void will silence this message. But if the end result is that the same memory still gets accessed through different types that are not permitted under the aliasing rules, you may still get unexpected results. If compiling without ansi aliasing corrects the behavior of your program, your code almost certainly violates the aliasing rules in a way that the compiler cannot detect.
41.10 - ARGADDR
Message <Context> taking the address of the constant expression "<expression>" in an argument list is a language extension. Description The Compaq C compiler will allow the address of a constant to be passed as an argument to a function call. This is an extension to standard C. Other C compilers might not successfully compile a program that uses this extension. User Action Assign the constant to a variable, and pass the address of the variable.
41.11 - ARGLISGTR255
Message <Context> the function call specifies an argument list whose length exceeds maximum specified by the calling standard. Any use of va_count by the called function will be wrong. Description The OpenVMS calling standard uses a byte-sized field to specify the size of the argument list. The argument list to this function call requires more storage than can be represented in this size. As a result, any use of va_count in the called function will return inaccurate information. User Action Either reduce the size of the argument list, or do not use va_count in the called function.
41.12 - ARGLISTOOLONG
Message <Context> the function call specifies an argument list whose length exceeds the VAX architecture limit. This call allocates stack space that is never deallocated by the called program. Description The OpenVMS VAX Calling Standard requires that the called program deallocate the storage allocated for its arguments. This is done by looking at the byte-size value that holds the argument list size. However, the argument list to this function call requires more storage than can be represented in a byte. As a result, the called function will not deallocate the proper amount of storage. This could result in unpredictable behavior. User Action Reduce the size of the argument list.
41.13 - ARGSIZE
Message <Context> the argument being passed to this function is too small. Description A function parameter of array type has been declared with the keyword "static" in its outermost bound to indicate that the function may generate code that assumes that when it is called the actual argument will have at least as many elements as specified in the parameter declaration. The argument provided in this call has fewer array elements than specified in the parameter declaration with static bound. User Action Check the size of the argument passed to the function and/or modify or remove the static bound on the function parameter.
41.14 - ARRAYBRACE
Message <Context> a required set of braces is missing. Description The initializer for this array was not enclosed in braces. While some compilers allow this, standard C requires braces around the initializer. User Action Enclose the initializer in braces.
41.15 - ARRAYLIMITSUP
Message <Context> Compaq C provides only limited support for array types larger than <n> bytes. Description This array type is larger than can be represented by size_t. While Compaq C will allow a type declared to be this size, uses of the type are not fully supported and may cause unpredictable behavior. User Action Reduce the size of the array type. It may be possible to use a pointer type instead of a large array. The storage can still be accessed using array syntax.
41.16 - ARRAYOVERFLOW
Message Integer overflow occurred when computing the size of an array type. Description An array type is larger than allowed on this platform. User Action Reduce the size of the array type. It may be possible to use a pointer type instead of a large array. The storage can still be accessed using array syntax.
41.17 - ARRNOTLVALUE
Message <Context> accepting a non-lvalue array in a subscript operator is an extension to the C89 standard. Description The C89 standard states that one of the operands to the subscript operator must be a pointer. However, the array used in this operator could not be converted to a pointer because it is not an lvalue. Therefore this code does not conform to the C89 standard and may not be accepted by other compilers. Note that the C99 standard allows this because all arrays are converted to pointers, not just lvalue arrays. User Action Be aware of this difference if you plan to port this source to another compiler.
41.18 - ASMCOMEXP
Message Comma expected while processing <text> instruction Description The asm directive parser was expecting a comma, but one was not found. User Action Correct the asm directive.
41.19 - ASMENDEXP
Message Semicolon or asm end expected while processing <text> instruction Description The asm directive parser was expecting a semicolon to end an instruction, but one was not found. User Action Correct the asm directive.
41.20 - ASMFIMMDOTS
Message Floating point load-immediate instructions require a .s file Description Using a floating point load immediate instruction in this asm directive will require the compiler to produce an .s file and invoke the assembler to process this source. User Action Do not use floating point load immediate instructions in asm directives.
41.21 - ASMFREGEXP
Message Float register expected while processing <text> instruction Description The asm directive parser was expecting a valid floating register, but one was not found. User Action Correct the asm directive.
41.22 - ASMHINTDOTS
Message Hint on <text> instruction requires a .s file Description Using a hint in a transfer instruction in this asm directive will require the compiler to produce an .s file and invoke the assembler to process this source. User Action Do not use hints in asm directives.
41.23 - ASMICONEXP
Message Integer constant expected while processing <text> instruction Description The asm directive parser was expecting a valid integer constant, but one was not found. User Action Correct the asm directive.
41.24 - ASMIDEXP
Message Identifier expected while processing <text> instruction Description The asm directive parser was expecting an identifier, but one was not found. User Action Correct the asm directive.
41.25 - ASMINSTEXP
Message Instruction mnemonic expected (found <text>) Description The asm directive parser was expecting an instruction mnemonic, but one was not found. User Action Correct the asm directive.
41.26 - ASMLABEXP
Message Label expected while processing <text> instruction Description The asm directive parser was expecting a label, but one was not found. User Action Correct the asm directive.
41.27 - ASMLABMULDEF
Message Multiple definitions of label in asm (<text>) Description The asm directive parser has detected the same label defined more than once. User Action Change one of the label names.
41.28 - ASMLABUNDEF
Message Reference to undefined label in asm (<text>) Description The asm directive parser has detected a reference to an undefined label. User Action Correct the asm directive.
41.29 - ASMLDGPDOTS
Message Unusual ldgp requires a .s file Description This indicates that a ldgp pseudo-instruction was encountered in an unusual place or with unusual arguments. The assembler will be invoked on the .s file. User Action Correct the asm directive.
41.30 - ASMLPAREXP
Message Left paren expected while processing <text> instruction Description The asm directive parser was expecting a left paren, but one was not found. User Action Correct the asm directive.
41.31 - ASMNOTINST
Message <text> instruction is not supported in asms on <text> Description The asm directive parser does not recognizes a pseudo-opcode on this platform. User Action Correct the asm directive.
41.32 - ASMNOTREG
Message <text> is not a register name on <text> Description The asm directive parser has noticed that a special register used in the directive is not valid on this platform. User Action Correct the asm directive.
41.33 - ASMNOTSUP
Message Support for <text> (<text>) in asms is not implemented on <text> Description The asm directive parser does not support the feature in question on this platform. User Action Rewrite the asm so that the feature is not used.
41.34 - ASMPALTRUNC
Message PALcode function has been truncated to <number> Description The asm directive call_pal instruction is followed by an integer beyond the range of call_pal values expected by the compiler. User Action Use a valid call_pal argument.
41.35 - ASMRAWREG
Message <text> uses <text> before it is defined Description The asm directive parser has noticed that an instruction uses a register as a source before it is given a value. User Action Correct the asm directive.
41.36 - ASMREGEXP
Message Fixed register expected while processing <text> instruction Description The asm directive parser was expecting a valid integer register, but one was not found. User Action Correct the asm directive.
41.37 - ASMREGOVRLAPSC
Message Destination register overlaps input for <text> (software completion) instruction Description An asm directive contains an instruction that may require a software completion routine in case of a runtime exception. Such an instruction requires that the result register be different than any input register. User Action Modify the asm so that the destination register is different than the sources.
41.38 - ASMRPAREXP
Message Right paren expected while processing <text> instruction Description The asm directive parser was expecting a right paren, but one was not found. User Action Correct the asm directive.
41.39 - ASMSYMDOTS
Message Use of symbolic addresses with <text> instruction requires a .s file Description Using a symbolic operand in this asm directive will require the compiler to produce an .s file and invoke the assembler to process this source. User Action Do not use symbolic operands in asm directives.
41.40 - ASMUNKNOWNARCH
Message Unknown architecture (<text>) specified in <text> assembler directive Description The asm directive parser has detected an unexpected argument to a .tune or .arch directive. User Action Correct the asm directive.
41.41 - ASMUNKSETOPT
Message Unsupported or illegal .set option (<text>) Description The asm directive parser has detected an unexpected argument to a .set directive. User Action Correct the asm directive.
41.42 - ASSERTFAIL
Message The assertion "<assertion>" was not true, <reason>. Description The expression in a #pragma assert non_zero(expression) directive was found to be zero. User Action Correct the condition that caused the expression to be zero.
41.43 - ASSERTION
Message <text> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.44 - ASSIGNEXT
Message <Context> relaxed struct or union type compatibility is a language extension. Description In certain modes, the compiler will allow assignments or comparisons between structs or unions of different types if their sizes are the same. This is an extension to standard C. Other C compilers might not successfully compile a program that uses this extension. User Action Recode the operation to use one of the memxxx run-time library functions.
41.45 - ASSUMEONEELEM
Message The type of the tentatively-defined array "<name>" is incomplete at the end of the compilation unit. The compiler will assume one array element. Description The C standard requires that the type of all tentative definitions must be completed before the end of the compilation unit. For compatibility with some other C compilers, Compaq C will give the array one element. User Action Complete the type.
41.46 - AUTOALIGN
Message The alignment boundary of an automatic cannot be greater than <longword or octaword>. Description For automatic variables, the storage class modifier _align cannot specify an alignment greater than octaword on Alpha or longword on VAX. The alignment will be set to the octaword on Alpha or longword on VAX. User Action Decrease the alignment. If a larger alignment is required, declare the variable with static storage class.
41.47 - AUTOEXTERNAL
Message <Context> a storage class of "auto" or "register" is illegal at file scope. Description The storage classes auto and register can only be used in a declaration that appears inside a function. They cannot be used in a declaration at file scope. User Action Remove the storage class specifier or move the declaration inside a function body.
41.48 - BADALIAS
Message Reference through restricted pointer <text> uses a pointer value based on different restricted pointer, <text> Description The C language requires that restricted pointers always point to different storage. The compiler has detected a case where an access using a restricted pointer is referencing memory pointed to a different restricted pointer. This may cause unexpected behavior. User Action Make sure restricted pointers point at unique storage.
41.49 - BADALIGN
Message Invalid alignment boundary. Description The _align storage class modifier was given an invalid value. See documentation for valid values on each platform. User Action Supply a correct value or remove the _align storage class modifier.
41.50 - BADANSIALIAS
Message This statement uses the type "<type>" to reference the same storage location as the statement at <loc>, which uses the type "<type>". This does not conform to the ANSI aliasing rules. Description The standard allows a compiler to assume that since these two statements use different types, these two statements reference different storage locations. The Compaq C compiler does so whenever ansi aliasing is enabled. Since your code relies on these two statements referencing the same storage location you should disable ansi aliasing. If you do not do so, optimization may result in your program exhibiting unexpected behavior. User Action Specify noansi_alias on the command line.
41.51 - BADBOUNDCHK
Message <Context> pointer arithmetic was performed more than once in computing an array element. The bounds checking code output by the compiler will only verify the "<expr>" expression. Description When an array is accessed using pointer arithmetic and run-time array bounds checking is enabled, the Compaq C compiler is only able to output the checking code for the first pointer arithmetic operation performed on the array. This can result in an incorrect check if the resulting pointer value is again operated on by pointer arithmetic. Consider the expression a = b + c - d; where a is a pointer, b an array, and c and d integers. When bounds checking is enabled the compiler will output a check to verify that c within the bounds of the array. This will lead to an incorrect runtime trap in cases where c is outside the bounds of the array and c - d is not. User Action Recode the pointer expression so that the integer part is in parenthesis. This way the expression will contain only one pointer arithmetic operation. In the earlier example the expression would be changed to a = b + (c - d);
41.52 - BADBOUNDS
Message <Context> the array bounds are incorrectly specified. Description A multi-dimensional array declaration contains a missing dimension specifier in a dimension other than the first. User Action Correct the declaration.
41.53 - BADBREAK
Message This break statement is not within a for, while, do, or switch statement. Description A break statement can only appear inside a for, while, do, or switch statement. User Action Remove the break statement, or replace it with a goto statement.
41.54 - BADCHARSINHDR
Message Illegal characters after header name. Description While processing an #include directive whose argument did not start with either a '<' or '"' character, the compiler encountered a character it did not expect. This most often occurs when the directive argument is a macro and there is an error during the expansion of that macro. User Action Correct the argument to the #include directive.
41.55 - BADCMMNTPSTNG
Message Token concatenation with comments might not be portable -- use ## operator. Description A macro body contains a comment between two tokens with no white space either before or after the comment. Older C compilers allowed this as a form of token pasting. This type of token pasting might not give the desired results with newer compilers. User Action Use the standard C form of token pasting by replacing the comment with the ## token pasting operator.
41.56 - BADCOMLITTYPE
Message <Context> the type "<type>" cannot be used to specify the type of a compound literal. Description The type of a compound literal must be an object type or an array of unknown size. User Action Use a valid type.
41.57 - BADCOMPLEXTYPE
Message <Context> "<spelling>" is an invalid complex type specifier. Description The valid complex type specifiers are float _Complex, double _Complex, and long double _Complex. User Action Use on of the valid complex type specifiers.
41.58 - BADCONDIT
Message <Context> a common type could not be determined for the 2nd and 3rd operands ("<true expression>" and "<false expression>") of a conditional operator. Description The types of the second and third operands of the conditional operator must conform to a set of rules that define what the type of the result of the conditional operator itself will be. If the types of these operands do not conform to those rules, the compiler cannot determine the type of the result, which is an error. Refer to the language documentation for a complete list of valid combinations of types for the second and third operands of the conditional operator. User Action Modify the conditional expression so that the types of the second and third operands conform to the language rules.
41.59 - BADCONSTEXPR
Message Syntax error in constant expression. Description A preprocessing constant expression contained a syntax error. The preprocessor was expecting to find a constant value or a left parenthesis. The preprocessor will assume a value of zero was encountered. User Action Correct the preprocessing constant expression.
41.60 - BADCONTINUE
Message This continue statement is not within a for, while, or do statement. Description A continue statement can only appear inside a for, while, or do statement. User Action Remove the continue statement, or replace it with a goto statement.
41.61 - BADCONVSPEC
Message <Context> this argument to <function name> contains a bad conversion specification "<incorrect conversion>" that will cause unpredictable behavior. Description The compiler has detected an illformed conversion specification (flags, width, precision, length modifier) or an unknown conversion specifier (not diouxefgcspn...) that will cause unpredictable behavior. This might not have been what you intended. User Action Review the documentation for this function and modify the conversion specification as appropriate.
41.62 - BADDCL
Message The name "<name>" cannot be undefined. Description The code has tried to #undef a macro that is predefined by the C standard. This is not allowed. The #undef will be ignored. User Action Remove the #undef directive.
41.63 - BADDECLSPEC
Message Invalid argument to __declspec. Valid arguments are "thread" or "__thread". Description The only valid arguments to the __declspec storage class modifier are "thread" or "__thread". User Action Either use one of the valid arguments, or remove the storage class modifier.
41.64 - BADDEFARG
Message Bad argument for "defined" operator. Description The defined preprocessing operator was given an invalid argument. The operator expects an identifier optionally enclosed in parenthesis. The value of the operator is undefined. User Action Supply a valid argument to the preprocessing operator.
41.65 - BADENUM
Message Invalid enumerator. Description While processing an enumerator list, the compiler was expecting to encounter an identifier, but it found something else instead. User Action Correct the program syntax.
41.66 - BADEXPR
Message Invalid expression. Description An invalid expression was encountered. User Action Correct the program syntax.
41.67 - BADFATCOMMENT
Message The compiler cannot recover. Description In certain cases, the compiler cannot proceed after an unterminated comment. In these cases this message will be issued. Note that this message is always output after the opencomment error has been output. User Action Terminate the comment before the end-of-file.
41.68 - BADFBDAT
Message <text> contains invalid feedback data Description A feedback file contains data, but it was corrupt and could not be used. User Action Create a new feedback file.
41.69 - BADFBFILE
Message Invalid feedback file: <text> Description The compiler was unable to read information from the specified feedback file. User Action Make sure the feedback file contains valid feedback information.
41.70 - BADFBTYP
Message Unexpected file type for feedback file <text> Description The file specified in the -feedback option does not have the file type expected by the compiler. User Action Use a valid feedback file.
41.71 - BADFLOATTYPE
Message <Context> this floating point type "<type>" is not supported on this platform. Description The IEEE floating types __s_float and __t_float are not supported on the VAX platform. User Action Change the type to a floating type that is supported on VAX, or compile the application on a platform that does support IEEE floating.
41.72 - BADFORMALPARM
Message This token may not appear in a formal parameter list. Description While processing the formal parameter list of a macro definition, the compiler encountered an invalid formal parameter specifier. The macro will be be defined and this token will ignored, but that may not have been what you intended. User Action Correct the formal parameter list so that it consists of a comma separated list of identifiers.
41.73 - BADFORSTOCLS
Message The declaration in a for loop can only have storage class auto or register. Description The declaration in a for loop contains a storage class specifier other than auto or register. This is not allowed. User Action Correct the storage class.
41.74 - BADFUNCSTOCLS
Message The storage class of function <name> cannot be <storage_class>. This storage class has been changed to 'extern'. Description The globalref storage class cannot be used with a function declaration. The compiler will use the storage class extern. User Action Remove the globalref storage class from the function declaration.
41.75 - BADGLOBALTYPE
Message This declaration has type "<type>", which is invalid for a globalvalue. The extern_model strict_refdef will be used instead. Description An object with globalvalue storage class can only have a type of integer, enum, or pointer type. In other cases, the compiler will change the storage class from globalvalue to strict_refdef. User Action Change the data type to be one that is valid for a globalvalue.
41.76 - BADHEADERNM
Message Invalid include file or header name specification. Description An #include directive was not followed by a valid argument. The directive will be ignored. The #include directive should be followed by either a file specification enclosed in angle brackets, a file specification enclosed in quotes, or an identifier that specifies a text module (OpenVMS only), or a macro to be expanded. User Action Supply a valid argument to the #include directive.
41.77 - BADHEXCONST
Message Hex constant value too large. Description A hex constant used in a preprocessor directive is too large. The value of the constant will be undefined. User Action Decrease the value of the constant.
41.78 - BADIFDEF
Message An #ifdef or #ifndef is not followed by an identifier. Description An #ifdef or #ifndef preprocessing directive was not followed by an identifier. The compiler will consider the preprocessor argument to be an identifier that is not defined. Therefore, in these cases an #ifdef will always be FALSE, and an #ifndef will always be TRUE. User Action Supply a valid identifier to the directive.
41.79 - BADIFNDEFARG
Message #ifndef argument is not an identifier. Description An #ifndef preprocessing directive was not followed by an identifier. The compiler will consider this to be a TRUE condition. User Action Supply a valid identifier to the directive.
41.80 - BADINCLUDE
Message An #include directive has illegal syntax. Description An #include directive was not followed by a valid argument. This message occurs when the argument starts with a '<' or '"' character, but does not end with a matching delimiter. In this case the compiler will add the matching delimiter to the end of the argument and process the directive normally. User Action Correct the argument to the #include directive.
41.81 - BADLINEDIR
Message Missing argument for #line directive. Description An argument was not supplied to a #line preprocessing directive. This directive must be followed by a digit sequence that specifies the line number or a macro that expands to a digit sequence. The directive will be ignored. User Action Supply a valid argument to the directive.
41.82 - BADLINEDIRTV
Message Illegal token in #line directive. Description A #line directive was followed by an invalid argument. The #line directive should be followed by either a digit sequence or a digit sequence followed by a string literal. The #line directive will be ignored. User Action Supply a valid argument to the #line directive.
41.83 - BADLINKREG
Message Invalid register "<register>" for linkage pragma. Pragma is ignored. Description The compiler encountered bad register specifier in a #pragma linkage directive. The message should point at the offending specifier. The compiler will ignore the entire pragma. User Action Correct the directive.
41.84 - BADLINNUM
Message Ignoring the line number for the #line directive -- too small. Description A #line preprocessing directive specified a line value that is either zero or less than zero. This is not valid. The directive will be ignored. User Action Either remove the directive or supply a positive value to the line specifier.
41.85 - BADLOCALE
Message The compiler could not set its locale to either the locale-specific native environment or the "C" locale. Description During start-up, the compiler was unable to set its locale. As part of its initialization, the compiler will issue the call setlocale(LC_ALL, ""). If this call fails, the compiler will try to issue the call setlocale(LC_ALL, "C). If this call also fails, the compiler will issue this message and abort. User Action The best way to determine why the compiler is failing is to write a small program that contains the same library calls the compiler is making and then examine the return values.
41.86 - BADMACROINLN
Message Illegal token from macro call in #line directive. Description A #line directive was followed by a macro whose expansion did not form a valid argument to the directive. The #line directive should be followed by either a digit sequence or a digit sequence followed by a string literal. The #line directive will be ignored. User Action Supply a valid argument to the #line directive.
41.87 - BADMACRONAME
Message "<directive>" directive is not followed by an identifier and is being ignored. Description A #define or #undef preprocessing directive was not followed by an identifier. The first argument to these directives must be an identifier that specifies the macro to define or undefine. The compiler will ignore the directive. User Action Correct the argument to the preprocessing directive.
41.88 - BADMBCOMMENT
Message An invalid multibyte character was encountered in a comment. Description An invalid multibyte character was found in a comment. While this will not affect the program execution, it might not have been what you intended. User Action Correct the multibyte character.
41.89 - BADMCRORECURS
Message Recursive expansion of macro "<name>" exceeded <num> levels and was terminated. Description In certain cases, the compiler will allow a macro to be recursively expanded. In these cases, the compiler limits the level of the recursion to prevent the compiler from looping to the point where it consumes all available memory. When this level has been reached, this message is output. User Action Rewrite either the macro definition or the macro invocation so that the recursion ends before the compiler limit is reached. Note that the use of recursive macros is not a feature of the C standard, and most other C compilers will not support this.
41.90 - BADMEMBER
Message Invalid member declaration. Description A struct or union contains an invalid member declaration. In most cases this error occurs when a semi-colon was omitted from the previous member declaration. User Action Correct the declaration.
41.91 - BADMEMOFF
Message <Context> multiple definitions of member "<name>" found with different offsets. Description In certain modes, the compiler will allow a struct or union reference whose right operand is not a member of the struct or union type of the left operand. This is allowed for compatibility with other compilers. However, in these cases the right operand must specify a member name that is declared with the same type and at the same offset in every struct or union type that declares it. This message is issued when the compiler finds member name it is looking for declared with a different offset in more than one struct or union type. User Action Compaq recommends that the left operand or a struct or union reference specify a member that is a member of the type of the struct or union specified by the right operand. If this modification cannot be made then the member specified by the left operand must be declared at the same offset and with the same data type in all struct or union declarations that declare that member.
41.92 - BADMEMTYP
Message <Context> multiple definitions of member "<name>" found with different types. Description In certain modes, the compiler will allow a struct or union reference whose right operand is not a member of the struct or union type of the left operand. This is allowed for compatibility with other compilers. However, in these cases the right operand must specify a member name that is declared with the same type and at the same offset in every struct or union type that declares it. This message is issued when the compiler finds a member name it is looking for declared at the same offset but with different types in more than one struct or union type. User Action Compaq recommends that the left operand or a struct or union reference specify a member that is a member of the type of the struct or union specified by the right operand. If this modification cannot be made then the member specified by the left operand must be declared at the same offset and with the same data type in all struct or union declarations that declare that member.
41.93 - BADMODULEID
Message Invalid identifier found immediately following "#pragma module" or "#module" directive. Description The #pragma module or #module directive must be followed by an identifier that specifies the module name used by the linker. User Action Correct the directive.
41.94 - BADMULTIBYTE
Message An invalid multibyte character was encountered <in type of construction>. Description An invalid multibyte character was encountered. The message will provide additional information about the location and attempted use of the character. User Action Correct the multibyte character.
41.95 - BADNUM
Message <text> Qualifier value '<text>' is not an integer Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.96 - BADOCTCONST
Message Octal constant value too large. Description An octal constant used in a preprocessor directive is too large. The value of the constant will be undefined. User Action Decrease the value of the constant.
41.97 - BADOPCCAP
Message <text> instruction used is not in the selected instruction set Description The compiler has output an instruction that is not in the instruction set selected on the command line. One way this can happen is to compile a program which contains a floating point operation and specifying that no floating point instructions should be generated. User Action Either modify the source so the instruction will not be necessary, or use a different instruction set.
41.98 - BADOPENBRACE
Message This open brace may be missing a close brace and causing the syntax error at <location>. Description This message is always output to the terminal after another syntax error. It is intended to provide the programmer with additional information that may identify the cause of the syntax error. This message may, or may not, provide useful information. In general, the more consistent the coding style in the source function, the more likely this message will be accurate. User Action Correct the program syntax.
41.99 - BADPARSEDECL
Message In this declaration, "<id>" must specify a type. Description In processing a declaration, the type of the declarator has not been declared as a typedef. User Action Either declare the type as a typedef, or correct the spelling of the type specifier in this declaration.
41.100 - BADPARSEPARAM
Message In this parameter list, "<param>" must either be a type or must be followed by a ",". Description In processing a function declaration, the compiler has found a case where the parameter list begins with two identifiers not separated by a comma and where the first identifier is not a type specifier. If this is an old-style declaration the two identifiers must be separated by a comma. If this is a prototype declaration, the first identifier must specify a type. User Action Correct the function parameter specifiers.
41.101 - BADPPDIR
Message File ends in an unfinished pp directive. Description An unexpected end-of-file was encountered during a preprocessing directive. User Action Correct the directive.
41.102 - BADPRAGMAARG
Message Unexpected or missing argument to #pragma <pragma name>. Pragma is ignored. Description An argument to a #pragma preprocessing directive is either missing or is not correct. The compiler will ignore the directive. User Action Correct the directive.
41.103 - BADPRAGMAARG1
Message Unexpected token encountered in pragma. Found "<found>" when expecting <expecting>. The pragma will be ignored. Description While parsing a #pragma directive, the compiler has encountered something unexpected. The message will contain information about what the compiler was expecting as well as what it found. User Action Correct the offending directive.
41.104 - BADPRAGMALINK
Message A bad linkage pragma was specified. Pragma is ignored. Description The compiler encountered a bad #pragma linkage directive. The error message should point to the place in the pragma that the compiler considers bad. The compiler will ignore the entire pragma. User Action Correct the directive.
41.105 - BADPRAGNAMES
Message Invalid argument to the pragma names directive. Pragma is ignored. Description An invalid argument has been specified for the #pragma names preprocessing directive. User Action Correct the argument to the pragma.
41.106 - BADPREFIX
Message Argument to extern_prefix is not a recognized keyword or a quoted string. Pragma is ignored. Description An invalid argument has been specified for the #pragma extern_prefix preprocessing directive. The directive expects either the identifiers "save", "__save", "restore", "__restore", or a string constant that specifies the external prefix to use. The compiler will ignore the pragma. User Action Correct the argument to the pragma.
41.107 - BADPROTYP
Message Unexpected file type for profile file <text> Description The file specified in the -feedback option does not have the file type expected by the compiler. User Action Use a valid feedback file.
41.108 - BADPTRARITH
Message <Context> performing pointer arithmetic on a pointer to void or a pointer to function is not allowed. The compiler will treat the type as if it were pointer to char. Description Pointer arithmetic is not allowed on pointers to function or void types For compatibility with some other compilers, an output file is still created. The result produced will be the same as if the pointer were a pointer to char. This may or may not be compatible with other compilers that accept this syntax. User Action Cast the pointer type to a pointer to object type before performing the arithmetic.
41.109 - BADREGISTER
Message <Context> "<name>" has register storage class, but occurs in a context that precludes register storage. The storage class has been changed to auto. Description An object that was declared with register storage class has been referenced in a way that is not valid for a register. The most common example is taking the address of an object declared with register storage class. As certain array accesses also require taking the address of an array, this message can also be output for accessing the element of an array declared with register storage class. The compiler will change the storage class from register to auto. User Action Either remove the register storage class from the declaration, or change the reference to be one that is valid for objects with register storage class.
41.110 - BADRETURNTYPE
Message <Context> a function cannot return <type> type. Description A function return type cannot be an array or function type. User Action Correct the function declaration so that the return type is valid.
41.111 - BADSEVERITY
Message The severity of message id <name> cannot be made less severe. The severity for this message was not changed. Description The severities of the compiler's error and fatal messages cannot be changed to a severity that is less severe. The compiler's fatal messages cannot be changed to any other severity. The compiler's error messages can only be changed to fatals. User Action Remove the pragma or compiler option that tried to change the severity.
41.112 - BADSTATICCVT
Message <Context> the address cannot be converted to the destination type. Description A static initialization tried to convert a link-time address to another type. However, the linker on this platform will not support such a conversion. User Action Rewrite the static initialization, or perform the initialization using runtime code.
41.113 - BADSTMT
Message Invalid statement. Description An invalid statement was encountered. The most common cause of this error is when a declaration appears after the first statement in a compound statement. User Action Correct the program syntax.
41.114 - BADSTMT1
Message Invalid statement. This condition may have been caused by an open brace without a matching close brace. The compiler will attempt to identify open braces that might be missing a close brace. Description An invalid statement was encountered. This condition may have been caused missing close brace. This message is followed by some number of additional messages that attempt to identify User Action Correct the program syntax.
41.115 - BADSUBSCRIPT
Message <Context> an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. Description The compiler has detected an array subscript expression that is outside the bounds of any valid array. The array access might cause unpredictable behavior. User Action Specify a valid array subscript.
41.116 - BADTKEN
Message Lexically invalid token. Description An invalid token was encountered in a preprocessing directive. User Action Correct the preprocessing directive.
41.117 - BADUNKNOWNVLA
Message <Context> a "*" bounds specifier is invalid. Using a "*" to specify a variable-length array of unknown size is only valid in declarations with function prototype scope. Description Using a "*" as a bounds specifier to designate a variable-length array with unknown size is only valid in declarations with function prototype scope. User Action Supply a valid bound specifier.
41.118 - BADUNROLLVAL
Message The #pragma unroll directive takes a value from zero to 255. The value "<val>" is outside that range. The directive will be ignored. Description The value supplied to a #pragma unroll is outside the range allowed for the directive. The #pragma directive will be ignored. User Action Use a valid value for the unroll count.
41.119 - BADUSELINK
Message A bad use_linkage pragma was specified. Pragma is ignored. Description The compiler encountered a bad #pragma use_linkage directive. The error message should point to the place in the pragma that the compiler considers bad. The compiler will ignore the entire pragma. User Action Correct the directive.
41.120 - BADUSERMACRO
Message The name "<name>" cannot be a user-defined macro. Description The code has tried to #define either a macro that is predefined by the C standard or the DEFINED preprocessing keyword. This is not allowed. The #define will be ignored. User Action Remove the #define directive.
41.121 - BADVASTART
Message <Context> old-style parameter "<name>", with type that requires default argument promotion, cannot be used with va_start. Description It is invalid for the parameter specified in va_start to be one that requires default argument promotion. User Action The recommended fix is to recode the function definition to use a prototype-format definition. It is also possible to change the parameter declaration to use one of the default types, for example double.
41.122 - BIFENABLED
Message The function "<routine name>" is a builtin function reserved to the compiler, and does not require a #pragma intrinsic. The function will continue to be treated as a builtin. Description A function identifier specified in a #pragma function intrinsic is the name of a builtin function. These functions cannot be explicitly enabled, they are always handled as builtin functions. User Action Remove the inappropriate use of the pragma.
41.123 - BIFPROTO
Message <Context> the built-in function, "<name>", requires a prototype declaration from <filename>. Description Invoking a built-in function requires that the function be declared before it is invoked. This should be done by including the header file noted in the message. User Action Include the header file before the function is invoked.
41.124 - BITARRAY
Message The CDD description for <name> specifies that it is an array of bitfields; It has been converted to a scalar bitfield. Description Compaq C does not allow arrays of bitfields. The resulting C declaration will be a bitfield of the same total size as that specified in the CDD description. User Action If a bitfield type is acceptable, then no user action is necessary. If, however, the bitfield type is not acceptable, then the CDD description should be altered.
41.125 - BITBADREP
Message <Context> the bitfield type is not an integral type. Description A bitfield has been declared with a non-integral type. Standard C requires that all bitfields be declared with either int, unsigned int, or signed int type. User Action Change the type of the bitfield.
41.126 - BITCONSTSIGN
Message <Context> the integer constant "<constant>" does not have the same sign as the 1-bit bitfield it is being converted to. Description Either an unsigned 1-bit bitfield was assigned -1, or a signed 1-bit bitfield was assigned 1. This may not be what you intended. User Action Change the constant to be the appropriate sign.
41.127 - BITFIELDSIZE
Message The CDD description for bitfield <name> specifies a size greater than 32; The excess is declared separately. Description Compaq C does not allow individual bitfields larger than 32. As a result, a series of bitfields have been declared whose total size matches that of the CDD definition. User Action If the generated definitions are acceptable, then no user action is necessary. If, however, the generated definitions are not acceptable, then the CDD description should be altered.
41.128 - BITNOTINT
Message <Context> the bitfield type is not an int, signed int, unsigned int or _Bool. Description A bitfield has been declared with a type other than int, signed int, unsigned int or _Bool. This is not allowed by the C standard. User Action Change the declaration to use one of the allowed types or compile with a standard mode that allows this behavior.
41.129 - BITWIDTH
Message <Context> the bitfield width expression "<expression>" is outside the range <lower> to <upper>. Description A bitfield width specifier was either less than zero, or is greater than the number of bits in an int. In some modes, the compiler will assume a width specifier equal to the number of bits in an int. User Action Use a valid bitfield width specifier.
41.130 - BITWIDTHTYP
Message <Context> the bitfield width expression "<expression>" does not have an integral type. Description A bitfield width specifier does not have an integral type. A bitfield width specifier must be an integral constant expression. User Action Correct the width specifier.
41.131 - BLOCKEXTVLA
Message <Context> the block scope identifier "<name>" cannot be declared with a variably modified type because it has extern storage class. Description Only ordinary identifiers with block scope and without storage class extern, or ordinary identifiers with function prototype scope can be declared with a variably modified type. User Action Correct the declaration.
41.132 - BLOCKINL
Message Block level declarations of inline functions are not allowed. Description In C99 standard, block level declaration of inline functions are prohibited. User Action Move the inline function declaration to file scope.
41.133 - BLTINARGCNT
Message <Context> an incorrect number of arguments were passed to the builtin function, "<function expression>". Description This message is output on OpenVMS systems when the number of arguments passed to the builtin function is not one. User Action Correct the call to the builtin function.
41.134 - BLTINIMPLRET
Message <Context> for the function "<name>", the implicit return type of "<type>" is not consistent with the expected type of "<type>". It will be treated as an ordinary implicitly defined external function. Description A function that could be handled internally by the compiler has not been declared, so an implicit declaration has been created for the function. The return value for the function is being used, and the implicit return type does not agree with what the compiler expected to see. In such cases, the function will not be handled internally, but will instead be called at run time in the usual manner. This could result in a performance loss, or possibly incorrect results if the implicit return type is incorrect. User Action If the function is intended to refer to the runtime library routine, the appropriate header file should be included in the source. Alternatively, a correct prototype could be provided privately in the source file. If the function is intended to be a replacement for the runtime library routine, disable the intrinsic version by specifying "#pragma function(function_name)" in the source file.
41.135 - BOOLEXT
Message The _Bool data type is a new feature in the C99 standard. Other C compilers may not support this feature. Description This is a new language feature in C99. While having a standard specification for portability, the feature may not yet be available in all of the compilers you use. User Action Determine whether or not the use of this feature will cause portability problems for this code.
41.136 - BOOLNA
Message The _Bool keyword is not supported in this language mode. It will be treated as an identifier in this compilation. Description Support for the _Bool keyword is only available in certain language modes. Support is not present when the compiler is in VAX C, K & R (common), or strict ANSI89 standard modes. In these language modes _Bool will be treated as an identifier. User Action Compile using one of the other compilation modes.
41.137 - BOUNDADJ
Message The CDD description for <name> specifies non-zero-origin dimension bound(s); The bound(s) are adjusted to zero-origin. Description The CDD description specifies lower bounds(s) for an array that is non-zero. The resulting C definition will have the upper bound(s) adjusted for lower bound(s) of zero. User Action Verify that all subscript expressions are referencing the correct array element(s).
41.138 - BOUNDNOTINT
Message <Context> the array bound "<expression>" does not have an integral type. Description The compiler has encountered an array-bounds specifier that is not an integral type. Array-bounds specifiers must be positive integer constants. User Action Correct the array-bounds specifier
41.139 - BUGCHECK
Message Compiler bugcheck. Submit an SPR with a problem description. Description An unexpected condition occurred in the compiler. This is most likely caused by a compiler bug. User Action Reduce the program that is causing the failure as much as possible. This often leads to a small test case. Please submit a problem report containing enough information for Engineering to reproduce the problem. The problem report should include the small test case.
41.140 - C99NAONVAX
Message Full C99 is not supported on this platform. Language mode set to "relaxed_ansi89", which includes the C99 features supported on this platform. Description The Compaq C compiler on OpenVMS VAX does not support the C99 standard and will therefore not accept the /STANDARD=C99 qualifier. The compiler will use /STANDARD=RELAXED_ANSI. This mode includes all C99 features that are supported on OpenVMS VAX. User Action Do not use /STANDARD=C99 on this platform.
41.141 - CANNOTREDEF
Message Cannot #define a macro that is currently expanding. Description The program is trying to #define the same macro it is currently expanding. The #define will be ignored. User Action Remove the #define, or move it after the expansion of the macro.
41.142 - CANNOTUNDEF
Message Cannot #undef a macro that is currently expanding. Description The program is trying to #undef the same macro it is currently expanding. The #undef will be ignored. User Action Remove the #undef, or move it after the expansion of the macro.
41.143 - CANTDISABLE
Message The message id <name> cannot be disabled. Description The compiler's error and fatal messages cannot be disabled. User Action Remove this message id from the list of messages being disabled on the command line or in the #pragma message line.
41.144 - CANTMKRPSTORY
Message Attempt to create repository "<string>" for shortend names failed; OpenVMS status: <reason>. Description A compilation that used the /NAMES=SHORTENED qualifier could not open the repository used to store the shortened names. This could be because an invalid name was specified in the /REPOSITORY qualifier. The message will give additional information about the failure. User Action Correct whatever caused the failure.
41.145 - CDDATTR
Message One or more field descriptions in this CDD record specify an attribute that is being ignored. Description The CDD description specifies an attribute that is not supported in Compaq C. The attribute is ignored. User Action No action is required.
41.146 - CDDBADID
Message An invalid identifier, <name>, is being ignored in the dictionary directive. Description An unexpected identifier follows the dictionary pathname in a dictionary preprocessing directive. The identifier is ignored. User Action Remove the invalid identifier(s) in the dictionary directive.
41.147 - CDDEXT
Message #dictionary is a language extension. Description The #dictionary directive is an extension of Compaq C/C++ on OpenVMS. The program might not compile with other compilers or on other platforms. User Action Be aware of this if you wish to port the program.
41.148 - CDDPATH
Message A valid CDD pathname was not found. The CDD directive has been ignored. Description The #dictionary preprocessing directive was not followed by an argument. The directive must be followed by a character string that gives the path name of a CDD record, or a macro that expands to the path name of the record. User Action Supply a valid argument to #dictionary. Compaq also recommends that the #dictionary preprocessing directive be replaced by the #pragma dictionary operator.
41.149 - CDDTOODEEP
Message The attributes for the Common Data Dictionary record description <name> exceed the implementation's limit for record complexity. Description The CDD description specifies more attributes than the interface between the CDD and the compiler can handle. User Action Simplify the record description.
41.150 - CHARCONST
Message Ill-formed character constant. Description An invalid character constant was encountered. User Action Correct the character constant.
41.151 - CHAROVERFL
Message A character constant value requires more than sizeof(int) bytes of storage. Description A character constant is too long to fit in an int. The compiler will ignore the extra characters. User Action Remove the extra characters from the character constant.
41.152 - CHKEXPAND
Message <number> integrity check error(s) after IL expansion of routine <text> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.153 - CHKINIT
Message <number> integrity check error(s) in initial IL & ST for module <text> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.154 - CHKOPT
Message <number> integrity check error(s) after <text> optimization phase for routine <text> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.155 - CLASSNOINIT
Message <Context> the struct or union object "<name>" is uninitialized and has a const member. Description An object of struct or union type has a const member and has not been initialized. This might not have been what you intended. Compaq recommends that you initialize all objects with the const attribute. The missing initializer will make this an invalid declaration in C++. User Action Initialize the struct or union object.
41.156 - CLOSBRACKET
Message Missing "]". Description The compiler was expecting a closing bracket, but one was not found. User Action Correct the program syntax.
41.157 - CLOSEBRACE
Message Missing "}". Description The compiler was expecting a closing brace, but one was not found. User Action Correct the program syntax.
41.158 - CLOSEPAREN
Message Missing ")". Description The compiler was expecting a closing parenthesis, but one was not found. User Action Correct the program syntax.
41.159 - CMPPTRFUNVOID
Message <Context> accepting the [in]equality comparison of a pointer to void and a pointer to function type is a language extension. Description Under the C standard, it is a constraint violation to perform an [in]equality comparison between a pointer to void and a pointer to function type. Therefore this code may not be accepted by other compilers. User Action Cast one of the pointers to the type of the other.
41.160 - COLMAJOR
Message The CDD description for <name> specifies that it is a column-major array; It has been converted to a one-dimensional array. Description The Compaq C compiler supports only row-major arrays. Therefore the column-major array description in the CDD has been converted to a one-dimensional array of the same total size and with the same total number of elements. User Action Verify that all subscript references to the array reference the correct array element.
41.161 - COMMANDMACRO
Message Extraneous text "<text>" at the end of the command line macro "<macro>" is ignored. Description A command line macro define contains an invalid macro name. The compiler will define the macro name listed in the message. User Action Correct the command line invocation.
41.162 - COMPILERBUG
Message Bug found in compiler: <bug>. Description This message indicates that the compiler detected a bug within itself. User Action Please report the compiler bug and include an example program that reproduces the problem.
41.163 - COMPLEXEXT
Message The complex data type is a new feature in the C99 standard. Other C compilers may not support this extension. Description This is a new language feature in the C99 revision of the standard. While having a standard specification for portability, the feature may not yet be available in all of the compilers you use. User Action Determine whether or not the use of this feature will cause portability problems for this code.
41.164 - COMPLEXNA
Message The complex data types are not supported in this language mode. This will be treated as an identifier in this compilation. Description Support for the complex data types is only available in certain language modes. Support is not present when the compiler is in VAX C, K & R (common), or strict ANSI89 standard modes. In these language modes _Complex and _Complex_I will be treated as identifiers. User Action Compile using one of the other compilation modes.
41.165 - COMPLEXNA1
Message The complex data types are not supported on this platform. This will be treated as an identifier in this compilation. Description The complex data type is not supported on the VAX platform. User Action Remove use of the complex types or compile the application on a platform that does support the complex data types.
41.166 - CONLINKREG
Message Conflicting register usage between "<first set>" and "<second set>". Pragma is ignored. Description The same register was specified in two different register lists of a #pragma linkage directive. The compiler will ignore the entire pragma. User Action Correct the directive.
41.167 - CONPSECTATTR
Message Conflicting psect attribute overrides previous attribute. Description A psect attribute specified in a #pragma extern_model directive contradicts an attribute specified earlier in the directive. This attribute will override the one specified earlier. User Action Remove one of the contradictory psect attributes.
41.168 - CONSTCOMPLIT
Message <Context> accepting a compound literal as a constant is a language extension. The compound literal will be treated as a cast expression. Description A compound literal appears in a context where a constant expression is required. The C standard does not list compound literals as a form of operand that is allowed in a constant expression, so using a compound literal in this context is not maximally portable. The compiler will treat the compound literal as if it were a cast expression, which is a form of operand that the standard lists as being allowed in constant expressions. User Action For maximum portability, replace the compound literal with a cast expression.
41.169 - CONSTFOLDNS
Message <Context> the libraries on this platform do not yet support compile-time evaluation of the constant expression "<expression>". Description Compile-time evaluation of constant expressions requires underlying support in the libraries available to the compiler at compile-time, and this expression contains an operator that is not yet implemented in those libraries. User Action If possible, replace part of the constant expression with a variable of the same value.
41.170 - CONSTFUNC
Message Ignoring const type qualifier in declaration of <name>. Description The const type qualifier cannot be used with a function type. The compiler will ignore the type qualifier. User Action Remove the type qualifier.
41.171 - CONSTINWRT
Message Const variable resides in wrt extern model. Description The current extern model places all external objects in a modifiable section. Placing an object with a const type qualifier in such a section means that there is no run-time protection against writing to the object. This might not have been what you intended. User Action Place const objects in sections that cannot be modified.
41.172 - CONSTNOINIT
Message <Context> the const object "<name>" is uninitialized. Description A defined or tentatively-defined const object has not been initialized. This would not be valid in C++. It is also considered good programming practice to initialize all const objects with their value. User Action Either remove the const type modifier, or supply an initializer for the object.
41.173 - CONSTSTOCLS
Message <Context> the const object "<name>" has no explicit storage class. In C, its storage class defaults to "extern"; in C++, it defaults to "static". Add an explicit "extern" or "static" keyword. Description One of the more signifcant and confusing differences between C and C++ is their treatment of file scope const objects declared without a storage class. C will give the object extern storage class, making the object visible in other compilation units. C++ will give the object static storage class. This can cause an undefined symbol error when other compilation units try to reference the symbol. User Action Add an explicit "extern" or "static" keyword to the declaration.
41.174 - CONTFILE
Message A file ends with a continuation character. Description All source files, even those included via the #include preprocessing directive, must not end with a backslash continuation character. User Action Either remove the continuation character or add an additional line to the source program that does not end in a continuation character.
41.175 - CONTROLASSIGN
Message <Context> the assignment expression "<expression>" is used as the controlling expression of an if, while or for statement. Description A common user mistake is to accidentally use assignment operator "=" instead of the equality operator "==" in an expression that controls a transfer. For example saying if (a = b) instead of if (a == b). While using the assignment operator is valid, it is often not what was intended. When this message is enabled, the compiler will detect these cases at compile-time. This can often avoid long debugging sessions needed to find the bug in the user's program. User Action Make sure that the assignment operator is what is expected.
41.176 - CONVARASLIT
Message <Context> the use of the const variable "<name>" in place of a literal constant is a language extension. Description Compaq C will allow a non-volatile const variable that has been initialized to be used in contexts where a constant is required. For example, as the bounds specifier to a file scope array. This is an extension to standard C. Other C compilers might not successfully compile a program that uses this extension. User Action Use the constant value instead of the variable.
41.177 - CRXCOND
Message Common Data Dictionary description extraction condition. Description Something went wrong while trying to get the CDD record description from the CDD. The error message that follows gives more information about the nature of the problem. User Action If necessary, correct the indicated condition in the CDD record description or with the user environment.
41.178 - CVIDXOVFL
Message module uses more than 65536 CodeView type indices Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.179 - CVTDIFTYPES
Message <Context> "<expression>" of type "<type>", is being converted to "<target type>". Description In certain modes, the compiler will allow assignments or comparisons between pointer and integer types. This is an extension to standard C. Other C compilers might not successfully compile a program that uses this extension. User Action Use a cast operator to convert one operand to the other.
41.180 - CVTU32TO64
Message <Context> an unsigned 32-bit integer constant that has its high-order bit set has been converted to a signed 64-bit type. The conversion will not sign-extend. Description This message indicates a conversion that may produce unexpected results on this platform because the destination type is a 64-bit type instead of a 32-bit type. User Action If this is the intended behavior, first cast the constant to an unsigned 64-bit type.
41.181 - CXXCOMMENT
Message C++ style comments (//) may not be portable. Description C++ style comments have been detected on this line. Although they have been accepted by Compaq C in this language mode, they will not be accepted by all compilers or by Compaq C in strict C89 standard mode. User Action Replace C++ style line comments (//) with equivalent C comments (/* ... */) if portability is a concern.
41.182 - CXXKEYWORD
Message "<C++ keyword>" is a keyword in C++. Using it as an identifier in your C program will prevent porting your program to C++. Description This identifier is a keyword in C++. The program is, therefore, not a valid C++ program. User Action Choose a different name for the identifier.
41.183 - CXXPRAGMANA
Message The Compaq C++ pragma "<pragma name>" is not supported by Compaq C. The pragma will be ignored. Description The compiler has encountered a pragma that is supported by Compaq C++ but is not supported by Compaq C. The compiler will ignore the pragma. User Action Remove the pragma or compile the program with Compaq C++.
41.184 - DCLMISMATLNK
Message The declaration of "<name>" has <number> parameter(s) but its linkage "<name>" has <number>. Standard linkage will be used. Description The number of parameters specified in a declaration does not match the number of parameters specified by the special linkage associated with this function or typedef. The special linkage was specified via the #pragma use_linkage directive. Because of this mismatch, the compiler will ignore the special linkage and use the standard linkage instead. User Action Make sure the number of parameters specified by the special linkage match the number of parameters in the function.
41.185 - DCLMISMATLNK0
Message The declaration of "<name>" has an unknown number of parameters and cannot be used with the linkage "<name>". Standard linkage will be used. Description If a special linkage specifies parameter information, the declaration must not specify an unknown or variable number of parameters. The special linkage was specified via the #pragma use_linkage directive. Because of this mismatch, the compiler will ignore the special linkage and use the standard linkage instead. User Action Make sure the number of parameters specified by the special linkage match the number of parameters in the function type.
41.186 - DCLMISMATLNK1
Message <where> "<name>" <modifier>has a floating type but its linkage "<name>" specifies an integer register. Standard linkage will be used. Description A parameter or return value of a function type is a floating type, but the corresponding parameter or return value in the special linkage specifies an integer register. The special linkage was specified via the #pragma use_linkage directive. Because of this mismatch, the compiler will ignore the special linkage and use the standard linkage instead. User Action Make sure the register specified by the special linkage matches the type of of the corresponding parameter and return value of the function type.
41.187 - DCLMISMATLNK2
Message <where> "<name>" <modifier>requires an integer register but its linkage "<name>" specifies a floating register. Standard linkage will be used. Description A parameter or return value of a function type is an integer type, but the corresponding parameter or return value in the special linkage specifies a floating register. The special linkage was specified via the #pragma use_linkage directive. Because of this mismatch, the compiler will ignore the special linkage and use the standard linkage instead. User Action Make sure the register specified by the special linkage matches the type of of the corresponding parameter and return value of the function type.
41.188 - DCLMISMATLNK3
Message <where> "<name>" has a size that is incompatible with the number of registers specified by its linkage "<name>". Standard linkage will be used. Description The size of a parameter or return value of a function type is incompatible with the size specified by the special linkage. The special linkage was specified via the #pragma use_linkage directive. Because of this mismatch, the compiler will ignore the special linkage and use the standard linkage instead. User Action Make sure the number of registers specified by the special linkage match the type of the corresponding parameter and return value.
41.189 - DCLMISMATLNK4
Message <where> "<name>" <modifier>has a type that is not allowed because the it has the linkage "<name>". Standard linkage will be used. Description Using a special linkage places certain restrictions on the type of a function's parameters and return value. In general, the type must be a scalar type that can be represented by a register or registers on this platform. In cases where some other type is used, the compiler will ignore the special linkage and use the standard linkage instead. User Action Either remove the name from the #pragma use_linkage directive that specified the special linkage, or modify the type to be acceptable to the special linkage.
41.190 - DCLMISMATLNK5
Message "<name>" has a void return type but its linkage "<name>" specifies a return location. Standard linkage will be used. Description If a special linkage specifies return value information, the declaration must not specify a void return type. The special linkage was specified via the #pragma use_linkage directive. Because of this mismatch, the compiler will ignore the special linkage and use the standard linkage instead. User Action Make sure the return value specified by the special linkage matches the return type.
41.191 - DECCONSTLARGE
Message Decimal constant value too large. Description A decimal constant used in a preprocessor directive is too large. The value of the constant will be undefined. User Action Decrease the value of the constant.
41.192 - DECLAFTERSTMT
Message Placing a declaration after a statement is a new feature in the C99 standard. Other C compilers may not support this feature. Description This is a new language feature in the C99 revision of the standard. While having a standard specification for portability, the feature may not yet be available in all of the compilers you use. User Action Determine whether or not the use of this feature will cause portability problems for this code.
41.193 - DECLARATOR
Message Invalid declarator. Description A declaration did not contain an identifier that specifies the item to be declared. User Action Specify a declarator in the declaration.
41.194 - DECLINFOR
Message Placing a declaration in a for loop is a new feature in the C99 standard. Other C compilers may not support this extension. Description This is a new language feature in the C99 revision of the standard. While having a standard specification for portability, the feature may not yet be available in all of the compilers you use. User Action Determine whether or not the use of this feature will cause portability problems for this code.
41.195 - DECLSPECEXT
Message __declspec is a language extension. Description The __declspec storage class modifier is a language extension of Compaq C. Other C compilers might not successfully compile a program that uses the extension. User Action Be aware of this extension if you wish to port the code.
41.196 - DEFINOTHER
Message Another file in this compilation contains an external definition of a function named "<name>", or declares it as a variable with external linkage, at <where>. Description In a compilation where interfile optimization has been selected (-ifo on UNIX, /PLUS_LIST_OPTIMIZE on OpenVMS), the compiler has detected more than one definition of a function using the same external name, or has found that a function and a variable have the same external name. An external function can have only a single definition. And a given identifier with external linkage can refer either to a function or to a variable, but not both. User Action Remove or rename one of the names.
41.197 - DEFINOTHER1
Message The external variable "<name>" was defined as an external function in another module of this compilation at <where>. Description In a compilation where interfile optimization has been selected (-ifo on UNIX, /PLUS_LIST_OPTIMIZE on OpenVMS), the compiler has detected a name with external linkage defined as a variable in one compilation unit and a function in another. User Action Remove or rename one of the definitions.
41.198 - DEFINOTHER2
Message This declaration of "<name>" specifies a different type than the declaration in another module of this compilation at <where>. Description In a compilation where interfile optimization has been selected (-ifo on UNIX, /PLUS_LIST_OPTIMIZE on OpenVMS), the compiler has detected a name with external linkage declared with different types in two different modules. Although the runtime behavior may be as intended and match the behavior when the modules are separately compiled without interfile optimization, the behavior is not well defined unless the types are compatible. User Action Modify one or more of the declarations to make the types compatible.
41.199 - DEFINOTHER3
Message This declaration of "<name>" specifies a different thread-local attribute than a declaration in another module of this compilation at <where>. Description In a compilation where interfile optimization has been selected (-ifo on UNIX, /PLUS_LIST_OPTIMIZE on OpenVMS), the compiler has detected a name with external linkage declared thread-local in one module and not thread-local in another. This can lead to unexpected results at runtime. User Action Modify one the declarations to make the thread-local attributes match.
41.200 - DEFPARMTYPE
Message There is no declaration for the old-style function parameter "<name>". Type defaulted to int. This is a violation of the C99 standard. Description The parameter of an old-style function definition was not declared. It will default to int type. Omitting the type specifier is not valid in C99, and is often considered poor programming practice. User Action Declare the parameter. Compaq also recommends that old-style function definitions be replaced by prototype-format definitions.
41.201 - DEFRETURNTYPE
Message The type of the function <name> defaults to "int". Description A function definition did not include a type specifier for the function's return value. It will default to int. This might not be what you intend. User Action It is a good programming practice to give all function definitions explicit return types.
41.202 - DESIGBADARR
Message <Context> , a struct/union designator cannot be used with an object of array type. Description An initialization designator must match the type of the object being initialized. In this initialization, the current object is an array so a struct/union designator is not allowed. User Action Correct the initialization.
41.203 - DESIGBADCOMP
Message <Context> , an array designator cannot be used with an object of struct or union type. Description An initialization designator must match the type of the object being initialized. In this initialization, the current object is a struct or union, so an array designator is not allowed. User Action Correct the initialization.
41.204 - DESIGBADIND
Message <Context> , the constant expression "<expression>" in an array element designator is not a positive integer. Description An array-element designator must be an constant expression that yields a positive integer value. User Action Correct the element designator.
41.205 - DESIGBADIND1
Message <Context> , the array element designator "[<expression>]" specifies an element beyond the end of the array. Description An array element designator must specify a valid array element. User Action Correct the element designator.
41.206 - DESIGNATIONNA
Message The use of a designation in an initializer list is not supported in this compilation mode. Description Initializer lists that contain designations are a new feature in the C99 revision of the C standard. Compaq C will only support this extension in relaxed mode and strict c99 mode. User Action Use a compilation mode that supports the use of designations.
41.207 - DESIGNATORUSE
Message The use of a designation in an initializer list is a new feature in the C99 standard. Description Initializer lists that contain designations are a new feature in the C99 revision of the C standard. Other compilers may not support this feature. User Action Be aware of this portablility issue.
41.208 - DESIGNOMEMB
Message <Context> , the component designator "<name>" is not a member of the current structure or union object being initialized. Description An initialization designator specifies a struct or union member that is not a member of the current struct or union object. User Action Correct the initialization.
41.209 - DESIGSCALAR
Message <Context> , a designator cannot be used with an object of scalar type. Description An initialization designator can only be used on objects of array, structure, or union type. In this initialization, the current object being initialized is a scalar type so a designator is not allowed. User Action Correct the initialization.
41.210 - DIFFEXMODEL
Message This redeclaration of "<name>" specifies a different extern model than a previous declaration of the variable at <location>. Description Two declarations of the same variable use different extern models. The extern model is specified by a #pragma extern_model directive that appears before the declaration in the source. This redeclaration may cause unexpected behavior. User Action All declarations of a variable should use the same extern model.
41.211 - DIFFTYPEQUALS
Message <Context> the type of "<name>" has different type qualifiers than the previous declaration at <location>. The resulting type will be the composite of the two types. Description The C standard permits redeclaration and formation of a composite type only when the two types being considered are compatible, and types with different type qualifiers are not compatible. Compaq C allows this redeclaration for consistency with some other C compilers, and will form a composite type with all of the type qualifiers from both declarations. Be aware that these declarations may not be accepted by other C compilers. User Action Modify the declarations so that they use identically qualified types.
41.212 - DIRECTVNOCPP
Message "<Directive text>" is not recognized as a preprocessing directive in nopreprocessing mode, and is being ignored. Description An invalid preprocessing directive was encountered in a compilation performed with the -nocpp option. When using the -nocpp option, only a limited number of preprocessing directives, such as #pragma and #line, can appear in the program. The compiler will ignore the rest of the line. User Action Either remove the directive or compile without the -nocpp option.
41.213 - DISREDECL
Message <Context> the type of the external "<name>" is not compatible with the type of a declaration of "<name>" in another name scope at <location>. Description The same external identifier has been declared in different scopes with incompatible types. This might not have been what you intended. User Action Change all declarations of the same external identifier to use the same type.
41.214 - DOLLARID
Message Extension: A '$' was encountered in an identifier. Description Accepting a "$" character in an identifier is an extension of Compaq C/C++. The program might not compile with other C/C++ compilers. User Action Be aware of this if you wish to port the program.
41.215 - DUPCASE
Message The switch statement containing this case label already has a case label for "<number>". Description A switch statement contains more than one case label for the same case value. User Action Remove the duplicate case label.
41.216 - DUPDEFAULT
Message The switch statement containing this default label already has a default label. Description A switch statement can contain only one default label. User Action Remove the duplicate default label.
41.217 - DUPENUM
Message <Context> the enumerator "<name>" is not unique. Description An enumerator constant is declared more than once with the same value. While this is accepted by Compaq C, it is not allowed by the C standard. User Action Either use a different enumerator name or remove the previous declaration of the name.
41.218 - DUPEXTERN
Message The declaration of "<name1>" will map to the same external name as the declaration of "<name2>" at <where>. Description The compiler has detected a case where two different names in a program will map to the same external name in the output object file. This can cause unpredictable results at runtime. This will most often happen when the /NAMES=UPPERCASE or /NAMES=LOWERCASE qualifier causes two names with different case spellings to map to the same external name. User Action Either use the /NAMES=AS_IS qualifier, or modify one of the names.
41.219 - DUPLABEL
Message The label "<name>" is already defined in this procedure at <location>. Description A label has already been defined. Each function can define each label only once. User Action Remove the duplicate label definition.
41.220 - DUPLINK
Message Duplicate linkage pragmas for linkage name "<linkage name>". Description The same linkage specifier has been defined in more than one #pragma linkage directive. User Action Declare each linkage only once.
41.221 - DUPLPRAGASS
Message #pragma assert directive specified for the function name <name> while different #pragma assert was specified for its type. Description Duplicate assertion can't be specified for a function. Check whether #pragma assert was mistakenly specified for the same function more than once, or function's type is declared in a typedef which in turn has its own #pragma assert directive. User Action Either remove duplicate #pragma assert directive, or change assertions, or fix spelling of the function name or typedef.
41.222 - DUPPARM
Message <Context> "<name>" is a duplicate parameter name. Description The parameter identifier list of an old-style function definition uses the same identifier more than once. User Action Each identifier in the parameter list must be unique. Compaq also recommends that old-style function definitions be replaced by prototype-format definitions.
41.223 - DUPSTATIC
Message There is a redundant use of the keyword "static" in this array declaration. Description In C99 the keyword "static" may appear at most once in the outermost array-bounds specifier of a function parameter in a function prototype. User Action Remove redundant occurrences(s) of "static" from the array declaration
41.224 - DUPSTORCLS
Message <Context> the same storage class modifier occurs more than once. Description This declaration specifies the same storage class modifier more than once. User Action Remove the extra uses of the storage class modifier.
41.225 - DUPTYPEDEF
Message <Context> "<name>" has a duplicate typedef at <where>. This might not be portable. Description The same typedef has been declared to the same type more than once. Standard C does not allow this and other compilers might not accept it. User Action Remove the redundant declaration.
41.226 - DUPTYPESPEC
Message <Context> the same type specifier occurs more than once. Description The same type specifier appears more than once in the same declaration. The redundant specifier will be ignored. User Action Remove the duplicate type specifier.
41.227 - DUPTYPQUAL
Message <Context> there is a redundant use of type qualifier "<const or volatile>". Description The same type qualifier appears more than once in a type specifier. This violates the C89 standard. Other compilers may not accept this program. Note that C99 will allow redundant qualifiers. User Action Remove the redundant type qualifier.
41.228 - ELIFIGNORED
Message Out of place #elif directive ignored. Description An #elif preprocessing directive was encountered outside of an #if/#endif body. The directive will be ignored. User Action Remove the directive.
41.229 - ELLIPSEARG
Message Standard C does not permit the use of an ellipsis as an only argument. Description Standard C requires at least one formal parameter be declared before the ellipses. This declaration might not be portable to other C compilers. User Action Recode the function declaration to contain at least one formal parameter.
41.230 - ELLIPSEPARM
Message <Context> a parameter with type "<type>" matches an ellipsis in previous declaration at <location>. Description A function that has been previously declared as taking variable arguments is now redeclared as using a different number of formal parameters before the start of the variable argument list. This redeclaration might not be portable to other C compilers. User Action Recode the function declarations to match each other.
41.231 - ELLIPSISEND
Message No tokens may follow ... in a formal parameter list. Description The ellipsis may only appear at the end of a formal parameter list. Everything after that is being ignored. User Action Remove the unexpected token.
41.232 - ELSEIGNORED
Message Out of place #else directive ignored. Description An #else preprocessing directive was encountered outside of an #if/#endif body. The directive will be ignored. User Action Remove the directive.
41.233 - EMBEDCOMMENT
Message A comment is neither preceded nor followed by white space. Description A comment is neither preceded nor followed by white space. In certain modes the compiler will paste the tokens before and after the comment together to form a single token. This behavior is not valid in standard C. Writing programs that rely on this behavior might prevent the program from being compiled on other platforms. User Action Add white space before or after the comment, or use the ## operator to paste tokens together.
41.234 - EMPTYCHARCONST
Message Empty character constant. Description In some modes the Compaq C/C++ compiler will allow a null character constant. The compiler will give this constant a value of zero. Accepting an empty character constant is a language extension. Empty character constants are not valid in standard C. Writing programs that rely on this behavior might prevent the program from being compiled on other platforms. User Action Replace the empty character constant with '\0'.
41.235 - EMPTYFILE
Message Source file does not contain any declarations. Description This source file contains no declarations. This might not have been what you intended. For example, perhaps a necessary macro was not defined. User Action Every source program should contain at least one declaration.
41.236 - EMPTYINIT
Message An initializer list without an expression is not valid. The compiler will replace the empty expression with the constant 0. Description The C standard requires that an initializer list contain an expression. The compiler has encountered one without an expression. The compiler will treat the empty list ({}) as if it contained a single zero ({0}). This is for compatibility with some other C compilers. Be aware that this syntax may not be accepted by other C compilers. User Action Supply an expression to the initializer.
41.237 - EMPTYOBJ
Message Empty object file due to errors. Description An earlier condition will cause an empty object module to be created. User Action Correct the condition that was reported earlier.
41.238 - EMPTYSTRUCT
Message Allowing struct/union type with no members is a language extension. Description The C standard requires that a struct/union type have at least one member. The Compaq C compiler will accept this for compatibility with older compilers. The struct/union type will be treated as if it were declared { : 0; } User Action Provide at least one member for the struct/union.
41.239 - ENUM16BIT
Message <Context> the enumeration constant <name> is out of the range -32768 to 32767. This might not be portable. Description An enum constant is larger than can be represented in 16 bits. This would not be portable to a system with an int size of 16 bits. User Action Be aware of this if you wish to port to a system with an int size of 16 bits.
41.240 - ENUMCALC
Message <Context> the enum variable "<expression>" is used in an arithmetic operation. Description An enumerated type variable was used in an arithmetic operation. While this is valid in C, it might not have been what you intended. User Action Verify the use of the enum variable.
41.241 - ENUMINIT
Message <Context> the enumerator "<name>" is initialized to the nonintegral value "<expression>". Description An enum declaration contains an enumeration constant initializer that does not have an integer type. The initializer for an enumeration constant must be an integral constant expression. User Action Correct the initializer.
41.242 - ENUMRANGE
Message <Context> the enumeration constant "<name>" is out of range INT_MIN to INT_MAX and will be truncated. Description An enumeration constant must be representable as an int type. The specified value is outside the range of an int. In modes where this is a warning, the compiler will use the low-order bits to form the int value. User Action Use a valid constant value.
41.243 - ENUMSANDINT
Message <Context> allowing an enumeration type and a signed int to be compatible may not be portable. Description The standard states that enumeration types shall be compatible with an integer type. Compaq C, along with most other C compilers, has chosen the signed int type to be compatible with enumeration types. Other compilers may chose another type such as unsigned int (the C standard even allows an implementation to choose different integer types depending on the values of the enumeration constants defined for the type). Therefore this program may not be accepted by other C compilers. User Action Insert a cast to make the types the same.
41.244 - ENUMSNOTCOMPAT
Message <Context> allowing two different enumeration types to be compatible is a language extension. Description The Compaq C compiler allows two objects of different enumeration types to be compatible. The C standard specifies that enumeration types are distinct types. Therefore this program is not standard compliant and other C compilers may not accept it. User Action Use the same enumeration type or cast one type to the other.
41.245 - ENUMUSED
Message <Context> the enumerator name "<name>" has been used previously. Description The specified enumerator name has been previously declared as something other than an enumerator. User Action Either use a different enumerator name or remove the previous declaration of the name.
41.246 - ENVIRSTKDIRTY
Message At the end of the compilation the pragma <name> stack was not empty. This may indicate a coding error. Description The program being compiled has saved the named pragma state more often than it has restored it. Good coding practice calls for the pragma state to be restored some point after it has been saved. This condition may indicate the accidental failure to restore the state. User Action Make sure each pragma save has a corresponding pragma restore.
41.247 - ERRORLIM
Message diagnostic message limit exceeded Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.248 - ERRORMESSAGE
Message #error<errormsg> Description An #error directive was encountered. This message will include the text that follows the directive in the source program. User Action Remove the #error directive, or supply the proper macro definitions so that the compiler will skip the directive.
41.249 - ESCOVERFL
Message Invalid escape sequence encountered. Description An escape sequence in a character or string literal specifies a value outside the range of a character or wide character. User Action Specify a valid escape sequence.
41.250 - EXPANDEDDEFINED
Message Macro expansion includes the token "defined", which will be treated as an operator. This might not be portable. Description A macro expanded during the processing of a preprocessor #if directive included the token "defined". The Compaq C/C++ compiler will treat this as the defined preprocessing operator. Other compilers might treat this differently. User Action Rewrite the macro not to use the "defined" operator.
41.251 - EXPNOTRES
Message expression does not contribute to result Description The compiler has detected a source expression that does not contribute to the result. This may not be what you expected. User Action Verify the expression is what you intend.
41.252 - EXPRCVTINT
Message The expression "<expression>" has been converted to integer. Description In certain modes, Compaq C will allow switch expressions or case constants to be non-integer types. The expression or constant will be converted to int. In one of these cases, this warning will be issued. User Action Cast the switch expression to an integer type or use an integer case constant.
41.253 - EXPRNOTINT
Message The expression "<expression>" has <type> type, which is not integral. Description An expression that is required to have an integer type had a type that is not integral. This is not valid. An example of a situation where an integer is required is that in most modes Compaq C requires that the switch control expression have integer type. User Action Modify or cast the expression so that it has integer type.
41.254 - EXPRNOTUSED
Message <Context> the expression "<expr>" is never used. Description The compiler has detected an expression that is not used, and might not have a side-effect. This might not have been what you intended. User Action If the expression has a desired side-effect, the message can be ignored. Otherwise, you might want to consider removing the expression.
41.255 - EXTENDTYPE
Message This platform specific type is a language extension. Description The use of the types __int8, __int16, __int32, __int64, __f_float, __g_float, __s_float, __t_float might not be portable to other platforms or to other C compilers. User Action Be aware of this portability concern.
41.256 - EXTERNINIT
Message Compaq C allows the initialization of a variable with extern storage class. This differs from the VAX C behavior. Description VAX C does not allow a variable with extern storage class to be initialized. Compaq C will allow this, even in vaxc mode. User Action Be aware of this difference if you plan to compile the source with VAX C.
41.257 - EXTERNPOP
Message This "restore" has underflowed the extern model's stack. No corresponding "save" was found. Description The extern_model stack, managed by the #pragma extern_model and #pragma environment directives, contains more restores than saves. This could signify a coding or logic error in the program. User Action Make sure each restore has a corresponding save.
41.258 - EXTPREAFTER
Message This directive will not set the extern_prefix of "<name>" because there is a previous declaration of the identifer with external linkage at <where>. Description When an identifier is specified in a #pragma extern_prefix, the declaration of that identifier must appear after the #pragma. User Action Reorder the declaration and the #pragma so that the #pragma comes first.
41.259 - EXTPREAGAIN
Message This directive overrides the extern_prefix for "<name>" specified by an earlier #pragma extern_prefix at <where>. Description Two #pragma extern_prefix directives have specified different non-empty extern_prefixes for the same identifier. In such cases the later directive will set the extern_prefix for the identifier. User Action If it is necessary to respecify the extern_prefix for an identifier, first remove the prefix (by setting it to an empty string) and then specify the new prefix in a subsequent #pragma.
41.260 - EXTPRENODECL
Message There is no identifier named "<name>" with external linkage declared in this compilation unit. Description A #pragma extern_prefix directive specifies an extern prefix for an identifier that is not declared with external linkage in the compilation unit. This may not have been what you intented. User Action Remove the identifier from the #pragma extern_prefix, or declare it with external linkage, or set the prefix for this identifier to an empty string.
41.261 - EXTRABRACES
Message <Context> is enclosed within too many pairs of braces. Description An initializer contains too many open braces for the object being initialized. User Action Reduce the number of braces.
41.262 - EXTRAMODULE
Message Redundant "#pragma module" or "#module" directive ignored. Description A compilation unit can contain only one #pragma module or #module directive. All subsequent directives will be ignored. User Action Remove the extra directives.
41.263 - EXTRAPRAGARGS
Message Extra pragma arguments to #pragma <pragma> were found. Pragma is ignored. Description Unexpected arguments were found at the end of a #pragma directive. The directive will be ignored. User Action Remove the extra arguments.
41.264 - EXTRASEMI
Message Extraneous semicolon. Description An extra semicolon was found at the end of a declaration. It will be ignored. User Action Remove the extra semicolon.
41.265 - FALLOFFEND
Message The last statement in non-void function "<name>" is not a return statement. Description A function that returns a value does not end with a return statement. If function execution reaches the end of the function, the implied return statement that executes will return an undefined value. This might not have been what you intended. User Action End the function with a return statement that specifies a return value.
41.266 - FBFILENOTFOUND
Message Feedback file not found: <text> Description The specified feedback file could not be found by the compiler. User Action Specify the correct file name.
41.267 - FILECLOSE
Message An error occurred while attempting to close a source file: <problem>. Description An unexpected error occurred while closing a source file. The message text will contain additional information about the failure. User Action Correct the condition that caused the failure.
41.268 - FILENOTFOUND
Message File not found: <text> Description The specified file could not be found by the compiler. User Action Specify the correct file name.
41.269 - FILEOPEN
Message An error occurred while attempting to open the source file: <problem>. Description An unexpected error occurred while opening a source file. The message text will contain additional information about the failure. User Action Correct the condition that caused the failure.
41.270 - FILEREAD
Message An error occurred while attempting to read a source file: <problem>. Description An unexpected error occurred while reading a source file. The message text will contain additional information about the failure. User Action Correct the condition that caused the failure.
41.271 - FILESCOPEVLA
Message <Context> the file-scope identifier "<name>" cannot be declared with a variably modified type. Description Only ordinary identifiers with block scope and without storage class extern, or ordinary identifiers with function prototype scope can be declared with a variably modified type. User Action Correct the declaration.
41.272 - FINBRANCH
Message A goto to the label "<label>" branches into a finally handler. Description A goto statement tried to transfer into a finally handler. This is illegal. User Action Modify the goto or move the label outside the handler.
41.273 - FLOATCONSQUAL
Message The <float_const_qual> is not valid in strict ANSI mode and will be ignored. Description The -float_const option cannot be used in strict ANSI mode. The option will be ignored. User Action Either remove the -float_const option or use a different mode.
41.274 - FLOATCONST
Message Ill-formed floating constant. Description An invalid floating constant was encountered. User Action Correct the floating constant.
41.275 - FLOATERR
Message <Context> a floating point error occurs in evaluating the expression "<expression>". Description A floating-point error occurred while evaluating a constant expression. This is often caused by an invalid floating-point number. The value of the expression is undefined. User Action Correct the floating-point constant expression.
41.276 - FLOATOVERFL
Message <Context> floating-point overflow occurs in evaluating the expression "<expression>". Description A floating-point overflow occurred while evaluating a constant expression. The value of the expression is undefined. User Action Correct the floating-point constant expression.
41.277 - FLOATTOINT
Message <Context> "<expr>" is being converted from <type> type to int type. Description The C language requires that this expression be of integer type. In most cases the compiler will emit an error for this case. In VAX C mode, the compiler emits this warning and converts the expression to int type. This matches the behavior of VAX C. User Action If the VAX C behavior is what you intended, cast the expression to int to silence the diagnostic. Otherwise, recode the expression to reflect your intent.
41.278 - FMTNOTSTR
Message argument <number> of this function is not of type char * but corresponds to the format string specified by the #pragma assert directive at <location>. The format func_attr will be ignored. Description The format attribute causes the format string to be checked if it is a string constant. The format parameter can't be a format string because it is not declared as a char * type. The format attribute will be ignored. User Action Either remove the format assertion from the directive, correct the position of the format argument in the assertion, or declare the format argument as a "char *" in the proper position in the function prototype.
41.279 - FNAMETOOLONG
Message The file name "<name>" in this directive is too long. Description A preprocessing directive has specified a file name that is too long for this platform. User Action Supply a valid file name
41.280 - FORMATATTR
Message <Context> the arguments to <function name> do not match the assertions of its format attribute. The format argument or the argument preceeding the first argument to check is missing. Description The format attribute of this function asserts that the format argument exists and will be checked if it is a string constant. The first argument to check, if non-zero, identifies the argument corresponding to the ellipsis in the function declaration and asserts that the argument preceeding it exists. User Action Modify either the function call or the format attribute so that they match.
41.281 - FOUNDCR
Message A carriage-return character was encountered; it is being treated as white space. Description The compiler encountered a carriage-return character some place other than inside a character or string constant. The compiler will treat the carriage-return as white space. User Action The source might have been created by some non-standard means. If possible, replace all carriage-return characters outside of character or string constants with white space.
41.282 - FUNCELEMENT
Message <Context> the element type of an array type is a function type. Description The compiler has encountered an array with an element type of function. An array element must be an object type. User Action Change the type of the array element.
41.283 - FUNCIDLIS
Message <Context> the identifier "<id>" is not the name of a type. All parameter information in this declaration will be ignored. Description The declaration is most likely a malformed prototype-style function declaration. In a prototype-style declaration, each parameter must have a type. The identifier named in the message might be intended to be the (optional) name of a formal parameter and the type specification was mistakenly omitted, or it might be intended to be the name of a type but no typedef declaration for it is visible. Alternatively, the declaration might be intended to correspond to an old-style function definition, and mistakenly contains a formal parameter name in the declaration. Old-style function definitions list the names of formal parameters (without types) inside the parentheses, but old-style function declarations contain nothing inside the parentheses. User Action Correct the declaration.
41.284 - FUNCINIT
Message The declaration of the function "<name>" includes an initializer. Description A function declaration cannot contain an initializer. User Action Remove the initializer from the declaration.
41.285 - FUNCMEM
Message The member <name> has a function type. Description A struct or union member is declared with function type. This is not valid. User Action Correct the member declaration.
41.286 - FUNCMIXPTR
Message <Context> function types differ because this declaration specifies "<type1>" and a previous declaration specifies "<type2>". Description A function redeclaration differs from an earlier declaration of the same function because the pointer size of one of the arguments or the return result is different. User Action Use the same pointer size for all declarations of the function.
41.287 - FUNCNOTDEF
Message The function "<name>" has non-extern storage class, occurs in a context that requires its definition, and has no definition. The storage class has been changed to extern. Description In certain modes, the compiler will allow a static function to be declared within the scope of another function. If this function is referenced, then it must also be defined in the compilation unit. If the function is not defined, this message will be output, and the earlier static declaration will be changed to extern. User Action Define the static function with compilation unit.
41.288 - FUNCNOTFUNC
Message In this function definition, "<name>" has <type> type instead of a function type. Description A function definition does not have a function type. This can occur if the definition did not contain an open/close parenthesis pair. User Action Change the definition to specify a function type.
41.289 - FUNCREDECL
Message <Context> function types differ because one has no argument information and the other has an ellipsis. Description Two function types, used in an operation or a redeclaration of a function, are different because one uses ellipses and the other does not. Older compilers will accept this, but it is not valid standard C. User Action If used in an operation, a cast should be inserted. If used in a redeclaration, the redeclaration should be removed or modified.
41.290 - FUNCSTORCLS
Message <Context> a function has an explicit storage class other than "static" or "extern". Description This declaration specifies a storage class that is not valid for a function. If an explicit storage class is used in a function declaration, it must be either static or extern. User Action Either remove the storage class specifier, or use one of the valid storage classes.
41.291 - FUNCSTORMOD
Message <Context> a function cannot have this storage class modifier. Modifier ignored. Description A function cannot be declared with this storage class modifier. The only valid storage class modifier for a function declaration is __inline. The modifier is ignored by the compiler. User Action Remove the storage class modifier from the function declaration.
41.292 - FUNCSTRCLS
Message The block-level declaration of the function "<name>" specifies an explicit storage class other than extern. Description A block-level declaration of a function has specified an explicit storage class other than extern. Compaq C will change the storage class to extern. User Action Either remove the storage-class specifier, or change it to extern.
41.293 - FUTUREKEYWD2
Message "inline" is a keyword in the C99 revision of the C standard. Using it as an identifier will prevent your program from conforming to that standard. Description The token inline has been selected as a keyword in the C99 release of the C standard. Because the program uses it as an identifier, the program will not conform to that standard. User Action Change the name of the identifier.
41.294 - FUTUREKEYWORD
Message "restrict" is a keyword in the C99 revision of the C standard. Using it as an identifier will prevent your program from conforming to that standard. Description The token restrict has been selected as a keyword in the C99 release of the C standard. Because the program uses it as an identifier, the program will not conform to that standard. User Action Change the name of the identifier.
41.295 - GBLREFINIT
Message The declaration of "<name>" specifies the globalref storage class and includes an initializer. Description A declaration with storage class globalref cannot include an initializer. User Action Either remove the initializer or use a storage class that will allow an initializer.
41.296 - GCCINLINE
Message The inline and __inline keywords will be interpreted with GCC style semantics. To get C99 semantics, please specify -accept nogccinline. Description The C99 standard has a slightly different interpretation of the keyword inline than in GCC. The GCC __inline keyword also differs from the COMPAQ C __inline keyword. User Action Use the command line specifier -accept nogccinline.
41.297 - GEMARGSIZE
Message <Context> the size of "<expression>" exceeds the implementation's limit of 2147483647 bytes on the size of a function argument. Description The size of a function argument exceeds the Compaq C implementation limit. User Action Either reduce the size of the argument or consider passing it by reference.
41.298 - GLOBALEXT
Message A storage class of globaldef, globalref, or globalvalue is a language extension. Description These storage classes are language extensions of Compaq C. Other C compilers might not successfully compile a program that uses the extension. User Action These storage classes can be recoded using the more portable #pragma extern model. <code_example> globaldef int var1; globalref int var2; globalvalue int var3; <endcode_example> Can be written as: <code_example> #pragma extern_model save #pragma extern_model strict_refdef int var1; extern int var2; #pragma extern_model globalvalue extern int var3; #pragma extern_model restore <endcode_example> For more information, consult the #pragma extern_model documentation.
41.299 - GOTSZOVFL
Message GOT table overflow for module <text> Description The object file required for this module is too complex. User Action Break the source program into several pieces so the individual objects will be simpler.
41.300 - HEXOCTSIGN
Message In VAX C mode, the compiler will give this constant a signed type for compatibility with VAX C. This differs from the behavior specified in the C standard, which would give this constant an unsigned type. Description The C standard specifies that an octal or hexadecimal integer constant has an unsigned type when its value cannot be represented in a signed integer type, but can be represented in the corresponding unsigned integer type. Some older compilers, such as VAX C, will treat this constant as having a signed type. In VAX C mode, the compiler matches the behavior of VAX C. In other modes the compiler matches the behavior specified in the standard. User Action Be aware that this difference may cause porting problems if this program is compiled in a mode other than VAX C mode, or with a compiler that does not support this old behavior.
41.301 - HEXOCTUNSIGN
Message The Compaq C compiler conforms to the C standard and will give this constant an unsigned type. Some older compilers may give this constant a signed type. Description The C standard specifies that an octal or hexadecimal integer constant has an unsigned type when its value cannot be represented in a signed integer type, but can be represented in the corresponding unsigned integer type. Some older compilers will treat this constant as having a signed type. User Action Be aware of this difference if you plan to port this source to an older compiler.
41.302 - IDEXPECTED
Message Identifier expected but not found. Description The compiler was expecting an identifier, but one was not found. User Action Correct the program syntax.
41.303 - IDINPARENSEXT
Message <Context> accepting an identifier enclosed in parentheses as the second argument to va_start is a language extension. Description The C standard states that the second argument to va_start must be an identifier. For compatibility with other C compilers, Compaq C will accept an identifier enclosed in parentheses. Be aware that this program does not conform to the standard and may be rejected by other compilers. User Action Remove the parentheses.
41.304 - IDPACKPOPPRAG
Message The identifier <name> from the pragma pack pop directive was not found on the top of the pragma pack stack. Description The identifier specified in the #pragma pack (pop, <identifier>) directive was not found on the top of the pragma pack stack. A previous #pragma pack pop or #pragma member_alignment restore may have already popped this identifier off the stack, the identifier may not have been previously pushed onto the stack, or extra elements are pushed on the stack on the top of element with the identifier, or the identifer may be spelled incorrectly. User Action Check the spelling of the identifier. Verify that the identifier was previously pushed onto the pack stack and not popped off by another #pragma pack pop or #pragma member_alignment restore, and all elements pushed on the top of the identifier are popped. Correct the directive(s).
41.305 - IEEEASSUMED
Message Use of /ROUNDING_MODE qualifier implies /FLOAT=IEEE. Compilation will be performed as if /FLOAT=IEEE were specified on the command line. Description This compilation has specified an IEEE floating-point rounding mode without specifying /FLOAT=IEEE on the command line. The compiler will set the floating-point type to IEEE floating. User Action Specify /FLOAT=IEEE on the command line.
41.306 - IEEEASSUMED1
Message Use of /IEEE_MODE qualifier implies /FLOAT=IEEE. Compilation will be performed as if /FLOAT=IEEE were specified on the command line. Description This compilation has specified an IEEE floating-point mode without specifying /FLOAT=IEEE on the command line. The compiler will set the floating-point type to IEEE floating. User Action Specify /FLOAT=IEEE on the command line.
41.307 - IGNORECALLVAL
Message <Context> the value returned from the function "<expression>" is not used - if this is intended, it should be cast to "void". Description A function that returns a value has been invoked, yet the value was not used. This might not have been what you intended. User Action Cast the function to void to suppress the message.
41.308 - IGNOREEXTRA
Message Spurious token(s) ignored on preprocessor directive line. Description A preprocessing directive was supplied more arguments than it expects. The extra arguments will be ignored. User Action Remove the extra arguments.
41.309 - IGNORETAG
Message <Context> the tag "<name>" is redeclared, but will be ignored. Description The "struct" or "union" before the tag used in this declaration does not match that in the declaration of the tag. The "struct" or "union" at the earlier declaration of the tag will be used in this declaration. User Action Either change the current declaration to match the declaration of the tag, or create a new tag containing the different type.
41.310 - IGNORETOKENS
Message # not in column 1 is ignored, skipping to end of line. Description In K & R mode, white space is not allowed before a preprocessing directive. The compiler will ignore this source line. User Action Either remove the white space or compile in a mode other than K & R.
41.311 - IGNORSYSREG
Message Ignoring system register specified in routine's linkage. Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.312 - IMAGINARYNA
Message The _Imaginary keyword is not supported by Compaq C. It will be treated as an identifier in this compilation. Description Support for the _Imaginary keyword is an optional extension to the C standard. Compaq C does not support this extension. All occurrences of _Imaginary will be treated as an identifier. User Action Do not use the _Imaginary type.
41.313 - IMPFNCFALLOFF
Message The last statement in non-void function "<name>" is not a return statement. Description This message indicates that a function with an implicit return type of it does not end with a return statement. If function execution reaches the end of the function, the implied return statement that executes will return an undefined value. This might not have been what you intended. User Action Consider declaring the function to be a void function. If it is supposed to return a value, add a return statement with the value the function is to return.
41.314 - IMPFNCMSSNGRET
Message Non-void function "<name>" with implicit return type int does not contain a return statement. Description This message indicates that a function with an implicit return type of int does not contain a return statement. This message is not issued for functions with an explicit return type. See message MISSINGRETURN. User Action Consider declaring the function to be a void function. If it is supposed to return a value, add a return statement with the value the function is to return.
41.315 - IMPLICITFUNC
Message <Context> the identifier "<name>" is implicitly declared as a function. Description A expression contained a reference to a function that has not been declared. User Action Declare the function before it is referenced.
41.316 - INCARGTYP
Message Type of actual argument inconsistent with formal parameter declaration in <text> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.317 - INCARRAYPARM
Message <Context> using array syntax to declare a parameter that is a pointer to an incomplete array type may not be portable. Description Although this array parameter declaration conforms to the C standard (since it is equivalent to a pointer to the inner array), other C compilers may not accept it. User Action Be aware of this difference if you plan to port this source to another compiler.
41.318 - INCARRAYPARM1
Message <Context> allowing an array parameter that has more than two unspecified element counts is a language extension. Description Because this parameter declaration will cause an array of incomplete types to be created, it does not conform to the C standard. Although some other C compilers will accept this declaration, many compilers will reject it. User Action Be aware of this difference if you plan to port this source to another compiler.
41.319 - INCLUDENOPEA
Message A non-default pointer size or member alignment is specified, and the header files in <directory> are not protected. This might yield unpredictable results. The protect_headers_setup script can help. See the protect_headers_setup(8) man page for details. Description Using a non-default pointer size or member alignment can cause unpredictable results for system header files that are not protected and that rely on the default pointer size or alignment. User Action Examine the man page referenced in the message for more information.
41.320 - INCLUDEOPEN
Message An error occurred while attempting to open the include file <name>: <problem>. Description An unexpected error occurred during the opening of an include file. The message text will contain additional information about the failure. User Action Correct the condition that caused the failure.
41.321 - INCLUDEPROEPI
Message Cannot include files in a prologue or epilogue file. Description It is not possible for a prologue or epilogue file to perform an #include directive. This might lead to nested inclusion. User Action Remove the #include directive from the prologue/epilogue file.
41.322 - INCOMPARRY
Message <Context> the member <name> has incomplete array type. This is not strictly conformant with the C standard and might not be portable. Description The compiler has detected an array without a bounds specifier to be part of a struct or union type, and not the final member of that type. Other C compilers might not successfully compile a program that uses this extension. User Action Specify the bounds if possible.
41.323 - INCOMPARRY1
Message <Context> the last member of a struct or union, <name>, has incomplete array type. This is not strictly conformant with the C89 standard and might not be portable. Description Compaq C will allow an array without a bounds specifier to be part of a struct or union type. While this extension is allowed by the C99 standard, other C compilers might not successfully compile a program that uses this extension. User Action Specify the bounds if possible.
41.324 - INCOMPCALL
Message <Context> the return type of "<expression>" is incomplete. Description A function with an incomplete return type other than void cannot be invoked. User Action Complete the function return type before the function is invoked.
41.325 - INCOMPDEREF
Message <Context> "<expression>" is a pointer to an incomplete struct or union and should not be used as the left operand of a member dereference. Description In certain modes, Compaq C will allow the struct or union specifier of a member dereference operator (->) to specify a struct or union that does not contain the element specified by the right operand. While this is considered poor programming practice, it was common with older C compilers. In cases where the left operand is a pointer to an incomplete type, the practice is considered even worse. While Compaq C will accept the construct in certain modes, the code should be modified. Further, this program does not conform to the C standard and might not be accepted by other C compilers. User Action Be aware of this if you wish to port the program.
41.326 - INCOMPELINIT
Message <Context> , an array's element type is incomplete, which precludes its initialization. Description In order to initialize an array, the array element type must not be incomplete. User Action Either remove the initializer or complete the array element type before this point in the program.
41.327 - INCOMPELMNT
Message <Context> the element type of an array type is incomplete. Description The element type of an array type is incomplete at the point in the program where the array is declared. While Compaq C will allow this if the element type is completed later, other compilers might require the type to be complete at this point in the program. User Action Either complete the type before the array declaration, or be aware of this if you wish to port the program.
41.328 - INCOMPMEM
Message The member "<name>" has an incomplete type. Description A struct or union member must not have an incomplete type. An exception is that Compaq C will accept a member that is an array with unspecified bounds, although warnings are often generated for this case. User Action Complete the type before it is used in as a member of a struct or union.
41.329 - INCOMPNOLINK
Message In this declaration, "<name>" has no linkage and is of an incomplete type. Description A declaration with no linkage cannot specify an incomplete type. Incomplete types can only be used for identifiers with external or internal linkage. User Action Either complete the type before the declaration or modify the declaration to specify an external or internal linkage.
41.330 - INCOMPPARM
Message In the definition of the function "<function name>", the parameter "<parameter name>" has an incomplete type. Description This function definition contains a parameter with an incomplete type other than an array whose bounds are not specified. This is not valid. User Action Complete the type before the function definition.
41.331 - INCOMPRETURN
Message In the definition of the function "<name>", the return type is an incomplete type other than void. Description A function definition cannot specify a return type that is an incomplete type except for the void type. User Action Complete the type before the function definition.
41.332 - INCOMPSTAT
Message The static declaration of "<name>" is a tentative definition and specifies an incomplete type. Description This file scope static declaration declares an identifier with incomplete type. This is not valid because a static declaration will allocate storage for the object, but the object's size is not known at this point in the compilation. User Action Complete the type before the static declaration.
41.333 - INCOMPTENT
Message The type of the tentatively-defined variable "<name>" is incomplete at the end of the compilation unit. Description This file-scope declaration with no storage-class specifier declares an identifier with incomplete type. The type must be completed before the end of the compilation unit. User Action Complete the type.
41.334 - INCOMPVALUE
Message <Context> "<expression>" has incomplete type, and so cannot be used as an rvalue. Description It is not possible to get the value of an expression with incomplete type. User Action Complete the type before its value is used.
41.335 - INCOMPVOID
Message <Context> the element type of an array type is incomplete. The void type cannot be completed. Description The compiler has encountered an array with an element type of void. An array element must be an object type. User Action Change the type of the array element.
41.336 - INCONSASSFUN
Message A function "<name>" appeared in more than one #pragma assert func_attrs specifying the same assertion. Description A function can appear on more than one #pragma assert func_attrs as long as each #pragma specifies a different assertion about the function. The assertion will be ignored. User Action Either remove the #pragma assert directive, or remove the function name from the pragma, or correct its spelling.
41.337 - INITCONFLICT
Message Overlapping static storage initializations detected at Psect <text> + <number> Description The compiler back-end as detected a case where the same storage location has been initialized to more than one value. This can occur when inter-file optimization has been enabled. User Action Remove one of the initializers.
41.338 - INITOVERLAP1
Message <Context> , this initializer list will provide a value for a subobject that was initialized by the earlier initializer "<init>". The earlier initializer will be ignored. Description This initializer list will provide a value for a subobject that has already been initialized. While this is valid, it might not have been what was intended. User Action Initialize each subobject only once.
41.339 - INITVLA
Message A variable-length array declaration cannot contain an initializer. The initializer will be ignored. Description A variable-length array declaration cannot contain an initializer. User Action Initialize the array using assignment statements after the declaration.
41.340 - INLINEIG
Message An inline specifier may only be used to declare an identifier for a function. The inline keyword will be ignored. Description The inline, __inline or __forceinline keywords have been used on a non-function type. Or a non-function type has been listed in a #pragma inline or #pragma forceinline directive User Action Remove the keyword or remove the identifier from the pragma.
41.341 - INLINESTOCLSMOD
Message The <__inline or __forceinline> storage class modifier is a language extension and might not be portable. Description The __inline and __forceinline storage class modifiers are an extension of Compaq C. Other C compilers might not successfully compile a program that uses the extension. User Action Be aware of this extension if you wish to port the code.
41.342 - INPTRTYPE
Message <Context> this argument to <function name> is of "<type name>" type and is not appropriate for the conversion specifier "<incorrect conversion>". The value may overwrite other data or produce unexpected results. Description The compiler has detected an input conversion specifier that does not match its corresponding argument. The corresponding argument may not be a pointer or may point to data that is wider or narrower than that specified by the conversion specifier. This might not have been what you intended. User Action Modify either the argument or the conversion specifier so that they match.
41.343 - INSUFALN
Message Alignment specified for extern model is insufficient for variable. Extern model alignment updated. Description The current extern model places all external objects in a section whose alignment is not sufficient for the alignment of an object being placed in that section. The compiler will update the alignment of the section so that it is adequate for the object. User Action Either increase the alignment of the section or move the object to another section.
41.344 - INTBADLINKAGE
Message #pragma use_linkage was applied to the intrinsic function "<routine name>". The function will be treated as an ordinary external function. Description Trying to optimize a pointer argument passed to an intrinsic function, the compiler discovered that #pragma use_linkage had been applied to the function declaration. The intrinsic function of this name that is understood by the compiler does not allow you specify a linkage. Therefore the compiler must assume that you are supplying your own function definition, and treat this as a call to an external function with no special properties. User Action If you want to call the intrinsic function, remove the #pragma use_linkage directive. If you are supplying your own function definition, you may want to rename the function or add a #pragma function directive for it.
41.345 - INTCONCASTSGN
Message <Context> casting of the constant "<constant>" to <type> type will cause a change in sign. Description Either a negative constant value has been cast to an unsigned type, or a positive value has been cast to a signed type and will be treated as a negative number after the cast. User Action Change the constant so that the sign will match the type of the cast.
41.346 - INTCONCASTTRU
Message <Context> casting of the constant "<constant>" to <type> type will cause data loss. Description A constant is cast to a type that is too small to hold the constant value. Data will be lost in the conversion. User Action Remove the cast, or use a smaller constant.
41.347 - INTCONST
Message Ill-formed integer constant. Description An invalid integer constant was encountered. User Action Correct the integer constant.
41.348 - INTCONSTSIGN
Message <Context> conversion of the constant "<constant>" to <type> type will cause a change in sign. Description Either an unsigned type was assigned a negative constant value, or a signed type was assigned a positive contant value which will be evalated as a negative number after the assignment. Note that this message is not output for assignments to 1-bit bitfields. The message bitconstsign is generated in that case. User Action If this is what you intended, cast the constant to the desired type. You might also want to change the constant to the correct signed or unsigned value in order to avoid the optional message intconcastsgn, which reports sign changes caused by casts.
41.349 - INTCONSTSIGNED
Message This integer constant value will be given the type long long int. This is compatible with the C99 standard. Older versions of the compiler would have given this unsigned long int type. Description With the introduction of the long long int type, the C99 standard changed the rules for how the type of certain integer constants are determined. Unsuffixed decimal constants which are too large for long int, but could fit in an unsigned long int are given the type long long int in C99. Prior to C99 these would be given unsigned long int type. User Action Be aware of this difference.
41.350 - INTCONSTTOOBIG
Message This integer constant is too large for the long long type. It will be given the unsigned long long type. Description The C99 standard specifies that a decimal constant must fit in a signed type. This constant is too large for the long long int type. For compatibility with older versions of the compiler, the constant will be given the unsigned long long type. User Action Append a 'U' suffix to the constant. This will force it to be unsigned.
41.351 - INTCONSTTRUNC
Message <Context> conversion of the constant "<constant>" to <type> type will cause data loss. Description A constant is converted to a type that is too small to hold the constant value. Data will be lost in the conversion. User Action If this is what you intended, cast the constant to the desired type. You might also want to mask off the high-order bits before casting in order to avoid optional message intconcasttru, which reports data loss caused by casts.
41.352 - INTCONSTUNSIGN
Message This integer constant value will be given the type unsigned long int. This is compatible with the C89 standard and older compilers. The C99 standard requires this to be a signed long long int. Description With the introduction of the long long int type, the C99 standard changed the rules for how the type of certain integer constants are determined. Unsuffixed decimal constants which are too large for long int, but could fit in an unsigned long int are given the type long long int in C99. Prior to C99 these would be given unsigned long int type. User Action Be aware of this difference.
41.353 - INTERNALPRAGMA
Message This is an internal pragma which should only be used by the compiler development team. It should not appear in user programs as it may cause unexpected behavior. Description This pragma exists only to allow the compiler developers to test certain functionality of the compiler. Its use outside the development team is unsupported. User Action Remove the pragma.
41.354 - INTIMPLIED
Message In the declaration of "<name>", no type was specified. Type defaulted to int. This is a violation of the C99 standard. Description The declaration contains a storage-class specifier, but no type was specified. The compiler will assume a type of int. Omitting the type specifier is not valid in C++ or in C99, and is often considered poor programming practice. User Action Add a type specifier to the declaration.
41.355 - INTOVERFL
Message <Context> integer overflow occurs in evaluating the expression "<expression>". Description An integer overflow occurred while evaluating a constant expression. The value of the expression is undefined. User Action Correct the constant expression so that it does not overflow.
41.356 - INTRINSICCALL
Message <Context> an apparent invocation of intrinsic function "<name>", <problem>. It will be treated as an ordinary external call. Description A function that could be handled internally by the compiler has been called in a manner that is inconsistent with expected usage. In such a case, the compiler will generate a run-time call to the function. This could result in performance loss. User Action If the function is intended to refer to the runtime library routine, the appropriate header file should be included in the source to provide the full function prototype and allow certain types of argument conversions. Alternatively, call arguments could be type cast as specified in the error message, or the function prototype could be added by hand. If the function is not intended to refer to the runtime library routine, the intrinsic version can be disabled by means of the "#pragma function (function_name)" directive.
41.357 - INTRINSICDECL
Message <Context> the declaration for intrinsic function "<name>" referenced at <location>, <problem>. It will be treated as an ordinary external function. Description A function that could be handled internally by the compiler has been declared with a prototype that does not agree with what the compiler expected to see, or has been declared at block scope instead of file scope. The function might in fact be a similarly-named replacement for the expected function, or the prototype might be incorrect or misplaced. In such cases, the function will not be handled internally, but will instead be called at run time in the usual manner. This could result in a performance loss. User Action If the function is intended to refer to the runtime library routine, the appropriate header file should be included in the source (note that it is not portable to include standard headers at other than file scope). Alternatively, the prototype could be modified as specified in the error message. If the function is intended to be a replacement for the runtime library routine, disable the intrinsic version by specifying "#pragma function(function_name)" in the source file.
41.358 - INTRINSICDECLER
Message <Context> the declaration for the prototyped intrinsic function "<name>" is incorrect: <problem>. Description A function that could be handled internally by the compiler and requires a prototype, has been declared with a prototype that does not agree with what the compiler expected to see. The function might be intended as a similarly-named replacement for the compiler-known function, or the prototype might be incorrect. The source must be modified to specify the intended behavior. User Action If the function is intended to refer to the compiler-known routine, the appropriate header file should be included in the source. Alternatively, the prototype could be modified as specified in the error message. If the function is intended to be a replacement for the compiler-known routine, disable the intrinsic version by specifying "#pragma function(function_name)" in the source file.
41.359 - INTRINSICINT
Message <Context> the <place> type for intrinsic "<name>" is being changed from "size_t" to "int". Description A function that is handled internally by the compiler expects an argument type or return type of "size_t", but the prototype for the function uses "int". The compiler will use "int" in this case. User Action Declare the function by including the appropriate header file. Alternatively, provide a private declaration (or modify an existing private declaration) with "size_t" in the appropriate location(s), and with "size_t" defined as it is in the standard system header files. If the function is not intended to refer to the runtime library routine, the intrinsic version can be disabled by means of the "#pragma function (function_name)" directive.
41.360 - INTUNDFUN
Message There is no function declaration visible for the identifier "<name>" at the point of this #pragma <pragma type>. Description An identifier specified in a #pragma intrinsic or #pragma function directive must refer to a function declaration visible at the point of the pragma. The identifier will be ignored. User Action Either remove the identifer from the pragma, correct its spelling, or reorder the source to ensure that a declaration of the identifier as a function is visible at the point of the pragma.
41.361 - INVALIDARG
Message Invalid argument to <pragma> pragma. Pragma is ignored. Description An invalid argument has been specified for a pragma directive. The compiler will ignore the directive. User Action Correct the directive.
41.362 - INVALIDSTR
Message The # operator produced an invalid string. Description During the expansion of a macro, the # stringize operator produced a token that is not a valid string. The operand to the stringize operator must contain characters that form a valid string. User Action Correct the operand to the stringize operator.
41.363 - INVALTOKEN
Message Invalid token discarded. Description An unexpected token was encountered by the compiler. The token has been ignored. An example is the preprocessing operator "#" appearing outside a macro body (int #a;). User Action Remove the unexpected token.
41.364 - INVCPPINARGS
Message Possible directive "#<directive>" within a macro argument list. The directive is treated as part of the argument list, and not as a preprocessing directive. Description The compiler has encountered a directive as part of the argument list of a macro invocation. This directive will be treated as part of the argument list, and not as a preprocessing directive. The behavior might be different than other compilers. User Action Rewrite the macro invocation so that it does not include the directive.
41.365 - INVDUPENUM
Message <Context> the value of the enumerator "<name>" conflicts with a previous declaration. Description The specified enumerator name has been previously declared with a different value. User Action Either use a different enumerator name or remove the previous declaration of the name.
41.366 - INVNOMEMPRAG
Message Invalid argument to nomember_alignment pragma. Pragma is ignored. Description The compiler was unable to parse a #pragma nomember_alignment directive. The directive will be ignored. User Action Correct the directive.
41.367 - INVPACKPRAG
Message Invalid pack pragma. Pragma is ignored. Description The compiler was unable to parse a #pragma pack directive. The directive will be ignored. User Action Correct the directive.
41.368 - INVPPDIRPEA
Message The preprocessor directive <name> is not allowed in a prologue or epilogue file. The directive is ignored. Description It is not possible for a prologue or epilogue file to have this preprocessor directive in it. User Action Remove the offending preprocessor directive from the prologue/epilogue file.
41.369 - INVSTATIC1
Message <Context> the keyword "static" and/or type qualifiers may appear only in the outermost array-bounds specifier of a function parameter. Keyword/qualifier ignored. Description The keyword "static" or a type specifier appeared in an array-bound specifier that was either not part of the declarator for a function parameter or it was not the outermost array-bound specifier of a function parameter. User Action Remove the keywords or confine them to use in the outermost array-bound specifier of a function parameter.
41.370 - INVSTATIC3
Message The keyword "static" may not appear in an array-bound specifier for a declaration of an array of unknown size. Keyword ignored. Description The keyword "static" appeared in the declaration of an array whose size was not known, either because array has in incomplete type or because the array has a star bounds specifier. User Action Remove the keyword.
41.371 - INVSTATIC4
Message An expression specifying the bound is required when the keyword "static" is used in an array-bounds specifer. Keyword ignored. Description The keyword "static" appeared in an array-bounds specifier that did not have an expression describing the array bound. The keyword tells the compiler that actual arguments passed to this parameter will always have at least as many elements as specified in the formal parameter. It is inconsistent to specify the keyword without also supplying a value for the bound. User Action Remove the keyword or supply a value for the bound.
41.372 - INVSTATIC5
Message <Context> the static bound value differs from the static bound value in another declaration at <location>. The smaller static bound value will be used. Description In a previous declaration of a function one or more parameters with array type were declared with a different static bound value than in the current declaration. This can occur if one of the sizes of the corresponding static arrays differ between the two declarations. User Action Remove the keyword "static" from the declarations, or give all function declarations the same static bound value.
41.373 - INVSTATIC6
Message <Context> neither the keyword "static" nor a type qualifier may be used in array-bounds for old-style function parameters. Keyword/qualifiers ignored. Description Use of the keyword "static" or a type specifier within the outermost array bound specifier of a formal parameter is a new feature in the C99 statndard. It cannot be used in old-style function definitions. User Action Remove the keywords or convert the code to use prototype-style function declarations and definitions.
41.374 - IVDEPNOFOR
Message This #pragma directive was not followed by a for statement. The directive will be ignored. Description The #pragma ivdep and #pragma unroll directives modify the for loop which follows them. The compile has encoutered one of the directives without a following for loop. The directive will be ignored. User Action Remove the directive.
41.375 - KEYCOMB
Message Illegal combination of keywords. Description An invalid combination of Microsoft keywords was encountered during a declaration. In most cases this is because the keywords contradict each other. One example would be using the __fastcall and __stdcall modifiers in the same function declaration. This message is only output when the compiler is in Microsoft mode. User Action Remove one of the contradictory modifiers.
41.376 - KNRFUNC
Message The function "<name>" is defined using the old style K&R syntax. The C standard has marked this syntax as obsolescent, and it is not supported in C++. Consider using the standard C prototype syntax. Description The function uses an old style function definition. Compaq recommends that old style function definitions be replaced by prototype-format definitions. User Action Recode the function definition to use the recommended prototype-format definition.
41.377 - LABELWOSTMT
Message Accepting a label without a following statement is a language extension. Description The C standard states that a label must be followed by a statement. For compatibility with other C compilers, Compaq C will accept a label without a statement. Be aware that this program does not conform to the standard and may be rejected by other compilers. User Action Add a semicolon after the label to create a null statement.
41.378 - LCRXCOND
Message Common Data Dictionary description extraction condition. <msg>. Description Something went wrong while trying to get the CDD record description from the CDD. The error message that follows gives more information about the nature of the problem. User Action If necessary, correct the indicated condition in the CDD record description or with the user environment.
41.379 - LDCOMPLEXNYI
Message <Context> the type long double _Complex is not fully supported on this platform. The type is only accepted when the compilation specifies the option to make the long double type 64-bits in size. Description On some platforms Compaq C does not support the long double _Complex type where the real and imaginary component are 128-bits in size. As Compaq C requires that each component of a long double _Complex be the same size as a long double, this compilation must specify the option to treat long double as 64-bits. User Action Either specify the correct compiler option or use the double _Complex type instead of the long double _Complex type.
41.380 - LEXNESTPAR
Message Lexically nested parallel at scope <text> is not supported Description Nested parallel directives are not supported. User Action Remove the nested parallel directive.
41.381 - LISTOPEN
Message An error occurred while attempting to open the listing file: <reason>. Description An unexpected error occurred during the creation of the listing file. The message text will contain additional information about the failure. User Action Correct the condition that caused the failure.
41.382 - LOCALEXTINI
Message The block-level declaration of "<name>" includes an initializer and specifies storage class extern. Description A block-level declaration with extern storage class cannot contain an initializer. User Action Remove the initializer from the declaration or move the declaration to file scope.
41.383 - LOGICALLINE
Message A logical source line longer than <number> characters was encountered. Description The length of a source line has exceeded the maximum length supported by the Compaq C compiler. User Action Reduce the size of the line.
41.384 - LONGDEBUG
Message The identifier name exceeds <number> characters; name passed to the debugger will be truncated to "<truncated spelling>". Description On some platforms, the name length supported by the compiler is greater than the length supported by the debugger. In this case the compiler must truncate the name when it is output to the debugger symbol table for this compilation. User Action Reduce the size of the name.
41.385 - LONGDOUBLENY1
Message <Context> type long double has the same representation as type double on this platform and is treated as a synonym for type double in this compilation mode. Description Compaq C does not support the long double type on this platform. In this compilation mode, the compiler will treat the long double type as a synonym for the double type. User Action Be aware of this.
41.386 - LONGDOUBLENYI
Message <Context> type long double has the same representation as type double on this platform. Description Although Compaq C will recognize the long double type as a different type than double in this compilation mode, on this platform they will both use the same representation. Using long double will not provide any additional precision or range. User Action Be aware of this.
41.387 - LONGEXTERN
Message The external identifier name exceeds <number> characters; truncated to "<truncated spelling>". Description The length of an identifier with external linkage exceeds the maximum allowed on this platform. The name used in an output object file will be truncated to meet the platform restrictions. Note that the debugger name will be unchanged. User Action Reduce the size of the name. On OpenVMS platforms the /NAMES=SHORTENED qualifier can also be used. When the qualifier is specified, the compiler will encode long external names instead of truncating them.
41.388 - LONGFLOATEXT
Message <Context> long float as a synonym for double is a language extension. Description Certain standard modes allow the use of the long float type as a synonym for double. This is not allowed by the C standard. This message indicates this use of long float as a potential portability problem. User Action Change long float to double.
41.389 - LONGLONGSUFX
Message The integer constant is of type "<type>", which is a new feature of C99 might not be portable. Description The use of the suffix ULL or LL on an integer constant does not conform to the C89 standard and might not be accepted by other C compilers. User Action Be aware of this if you wish to port the program.
41.390 - LONGLONGTYPE
Message <Context> type "<type>" is a new feature in C99. Description On some platforms, Compaq C will accept the [unsigned] long long type as a way to declare [unsigned] 64-bit integers. The long long int type is a new feature of C99 and other compilers might not accept this declaration. User Action Be aware of this portability concern.
41.391 - LONGMODULEID
Message Identifier name "<name>" in a #pragma module or #module directive exceeds 31 characters. Description A module name specified in the #pragma module or #module directive must be less than 32 characters. The compiler will truncate the name to the first 31 characters specified. User Action Shorten the module name.
41.392 - LONGMODULESTR
Message Character-string constant <string> in a #pragma module or #module directive exceeds 31 characters. Description An ident specified in the #pragma module or #module directive must be less than 32 characters. The compiler will ignore the directive. User Action Shorten the ident specifier.
41.393 - LONGPREFIX
Message Prefix string too long. Truncated to "<newprefix>". Description The specified prefix to the #pragma extern_prefix directive is too large for this platform. The prefix will be truncated. User Action Reduce the size of the specified extern prefix.
41.394 - LONGPSECT
Message Psect name is too long (maximum is 31 characters). Description The psect name specified in a globaldef declaration was longer than 31 characters. This exceeds the maximum allowed length. User Action Either reduce the psect name to 31 characters or remove the psect specifier.
41.395 - LVALUECAST
Message <Context> the result of the cast "<cast>" is used as an lvalue. Description The result of a cast has been used as an lvalue. This is a language extension of Compaq C. The program does not conform to the C standard, and might not be accepted by other compilers. User Action Remove the cast.
41.396 - MACROREDEF
Message The redefinition of the macro "<name>" conflicts with a current definition because <reason>. The redefinition is now in effect. Description A macro has been redefined with either different formal parameters and/or a different body than a previous definition of the macro. User Action Either make all definitions of the same macro identical, or undefine the macro using the #undef preprocessing directive before it is redefined.
41.397 - MACROREDEFIN
Message Macro redefined. Description A #define preprocessing directive has redefined a macro whose previous definition contained an error or warning. Normally, the compiler will issue a warning if a macro is redefined to something other than the previous definition. However, if the previous definition caused a warning or error to be generated, this informational message is output instead. User Action Do not redefine a macro without first undefining it.
41.398 - MAINNOTINT
Message Strict standard C extension: The declaration of the "main" function has a return type other than int. Description Standard C requires that the "main" function be defined with a return type of int. Compaq C will accept other return types, but the program does not conform to the C standard. The status value returned to the environment may not be what you expect, and other C compilers may not accept the definition as written. User Action Define the "main" function with a return type of int for maximal portability.
41.399 - MAINPARM
Message Strict standard C extension: The declaration of the "main" function has more than two parameters. Description Standard C requires that the "main" function takes no more than two parameters. Compaq C will accept more, but the program does not conform to the C standard. User Action Modify the declaration if you want the program to be standard conformant.
41.400 - MAINPROGEXT
Message MAIN_PROGRAM is a language extension. Description The use of MAIN_PROGRAM to designate a function as the main program is a language extension of Compaq C. Other C compilers might not successfully compile a program that uses the extension. User Action The main program should be declared by naming the function main.
41.401 - MAYHIDELOSS
Message <Context> "<expression>" has a larger data size than "<target type>". The use of a cast operator can suppress the message that this assignment might result in data loss. Description In a cast of a pointer to one of the integer types, or a cast of one of the integer types to a pointer, or a cast of one pointer type to another, the size of the source is greater than the size of the type being cast to. This cast could result in a loss of data if it is used as the source of an assignment. This potential loss of data can be verified by removing the cast and seeing if the compiler emits a loss of data message on the assignment. User Action If the cast cannot lose precision, it is safe to ignore this warning.
41.402 - MAYLOSEDATA
Message <Context> "<expression>" has a larger data size than "<target type>". Assignment can result in data loss. Description In an assignment of a pointer to one of the integer types, or one of the integer types to a pointer, the size of the source is greater than the size of the destination. The assignment can result in a loss of data. This might not have been what you intended. User Action If this was the intended operation, cast the source to the type of the destination before the assignment.
41.403 - MAYLOSEDATA2
Message <Context> "<expression>" has a larger data size than "<target type>". Assignment can result in data loss. Description In an assignment of two pointers, the size of the source is greater than the size of the destination. The assignment can result in a loss of data. This might not have been what you intended. User Action If this was the intended operation, cast the source to the type of the destination before the assignment.
41.404 - MECHMISMATCH
Message Argument passing mechanism does not match formal parameter mechanism for <text> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.405 - MEMBERVLA
Message <Context> the struct or union member "<name>" cannot be declared with a variably modified type. Description Only ordinary identifiers with block scope and without storage class extern, or ordinary identifiers with function prototype scope can be declared with a variably modified type. User Action Correct the declaration.
41.406 - MISALGNDMEM
Message This member is at offset <offset>, which is not a multiple of the member's alignment of <align>. Consider padding before this member, rearranging the order of member declarations, or using #pragma member_alignment. Description A member of a struct or union requires an alignment for efficient access but will be allocated at an offset that is not a multiple of that alignment. User Action Use one of the suggestions made in the message.
41.407 - MISALGNDSTRCT
Message This member requires <align1> alignment for efficient access, but is contained in a struct containing <align2> alignment. Consider using #pragma nomember_alignment <align1>. Description A member of a struct or union requires an alignment for efficient access that is more strict than the alignment of the enclosing struct or union. Even though this member is correctly aligned within the struct or union, if the struct or union is enclosed within another type, the member in question might be placed at a position with incorrect alignment for its type. User Action Use either the #pragma member_alignment directive or #pragma nomember_alignment directive with an argument equal to or greater than the alignment of the member.
41.408 - MISDEFARG
Message Missing argument for "defined" operator. Description The defined preprocessing operator was not supplied with an argument. The operator expects an identifier optionally enclosed in parenthesis. The value of the operator is undefined. User Action Supply a valid argument to the preprocessing operator.
41.409 - MISDEFPAR
Message Missing right parenthesis for "defined" operator. Description The defined preprocessing operator began with a left parenthesis, but no matching right parenthesis was found. The value of the operator is undefined. User Action Add the right parenthesis after the preprocessing operator argument.
41.410 - MISMATPARAM
Message <Context> parameter <number> has a different type than specified in an earlier declaration of this function. Description A function has been redeclared with a parameter whose type is different than the type specified in a previous declaration of the function. This generally leads to additional errors. User Action Correct the function declarations so that the parameter information is the same in each declaration.
41.411 - MISMATPRSRET
Message "<name>" has a non-void return type but its linkage "<name>" preserves the return register(s). Standard linkage will be used. Description The function or typedef's special linkage specifies that the register(s) used to return the function value are to be preserved. This is invalid as the register can either be preserved, or hold the return value, but not both. User Action Modify the #pragma linkage directive to either remove the register from the preserved list or to specify another register to hold the return value.
41.412 - MISMATTHREAD
Message <Context> the __declspec(thread) storage class modifier of "<name>" is different from a previous declaration of "<name>" at <location>. Description If an object is declared with thread-local storage, then all declarations of that object must declare it with thread-local storage. User Action Either remove the invalid redeclaration or modify it to match the previous declaration.
41.413 - MISPARAMCOUNT
Message <Context> the number of parameters differs from an earlier declaration of this function. Description A function has been redeclared with a different number of parameters than a previous declaration of the function. This message generally proceeds additional errors. User Action Correct the function declarations so that the parameter information is the same in each declaration.
41.414 - MISSINGCOMMA
Message This parameter is not preceded by a comma. Description The compiler has encountered a parameter specifier that is missing a preceding comma. The parameter will be defined anyway, though this may not have been what you intended. User Action Correct the formal parameter list so that it consists of a comma separated list of identifiers (possibly followed by ", ...").
41.415 - MISSINGFUNC
Message The function "<name>" has internal linkage, occurs in a context that requires its definition, and has no definition. Description The program has referenced a function declared with static storage class, but the function is not defined in the compilation unit. If a program references a static function, the function must be defined in the compilation unit. User Action Either define the function or change the function declaration to have extern storage class.
41.416 - MISSINGLABEL
Message The label "<label name>" is the target of a goto statement within the function "<function name>", but has no definition within "<function name>". Description Every label referenced in a goto statement must be defined in the same function. User Action Either change the name of the label in the goto statement, or define the label.
41.417 - MISSINGRETURN
Message Non-void function "<name>" does not contain a return statement. Description This message indicates that a function with an explicit return type does not contain a return statement. This message is not issued for functions with an implicit return type of int. See message IMPFNCMSSNGRET. User Action Consider declaring the function to be a void function. If it is supposed to return a value, add a return statement with the value the function is to return.
41.418 - MISSINGTYPE
Message Missing type specifier or type qualifier. Description The compiler was expecting a type specifier or type qualifier, but one was not found. User Action Correct the program syntax.
41.419 - MIXALLOCAVLA
Message <Context> this call to __ALLOCA occurs in a block that contains a variable-length array declaration. The storage allocated by this __ALLOCA call will<fragment>vla declaration was at <where>. Description Storage allocated for arrays of variable length have their storage deallocated when the block they are declared in exits. Storage allocated by __ALLOCA is not normally deallocated until function exit. Compaq C cannot support both types of deallocation in the same block. Therefore, when both a vla array and an __ALLOCA call appear in the same block, the storage for both will be deallocated with the block exits. User Action Be aware of this. If the storage allocated for __ALLOCA must remain allocated until function exit, move the __ALLOCA call outside the block declaring the vla array.
41.420 - MIXALLOCAVLAV
Message <Context> using __ALLOCA and variable-length arrays in the same function is not allowed on this platform. The first variable-length array declaration is at <where>. Description Because they place different requirements on stack allocation on VAX systems, __ALLOCA and variable-length arrays cannot be used in the same function. User Action Recode the function to use either variable-length arrays or __ALLOCA.
41.421 - MIXFUNCVOID
Message <Context> compatibility of a pointer to void and a pointer to a function is not portable under the C standard. Description The C standard defines pointer to void as being assignment compatible only with pointers to object or incomplete types. An implementation may represent function pointers in a way that cannot be stored in a pointer to void (or vice-versa). Thus even an explicit cast between a function pointer and a pointer to void is not portable. User Action If a generic pointer to function is needed, declare a typedef for some pointer to function type, and always use explicit casts to assign to and from that type.
41.422 - MIXINLINE
Message The function <name> is declared both <this> and <that>. Description A function is declared with more than one of the forceinline, inline, or noinline attributes. It will be given the attribute that will provide the most optimization. User Action Make sure each function has only one of the attributes.
41.423 - MIXLINKAGE
Message <Context> "<name>" is declared with both internal and external linkage. The previous declaration is at <location>. Description This warning is output in certain cases when the linkage of a declaration conflicts with the linkage specified in an earlier declaration. User Action Change one of the declarations so that the linkages match.
41.424 - MIXLINKAGE1
Message <Context> "<name>" is declared with both internal and external linkage. The previous declaration is at <location>. Description This informational is output when a function previously declared to have extern storage class is redeclared to have internal storage class and the mode of the compiler is common (K & R) mode. User Action Change one of the declarations so that the linkages match.
41.425 - MIXOLDNEW
Message The definition of the function <name> includes both a prototype and a declaration list. Description A function has been defined using both a declaration list and a prototype. This is not valid. User Action Correct the declaration.
41.426 - MIXSTORCLS
Message <Context> a storage class has already been specified. This storage class is ignored. Description The same declaration contains more than one storage class specifier. The compiler will ignore all storage class specifiers after the first one. User Action Change the declaration to use only one storage class specifier.
41.427 - MIXVLAALLOCA
Message Declaring a variable length array in the same block as a call to __ALLOCA will cause the storage allocated by any __ALLOCA call to<fragment> previous call to __ALLOCA was at <where>. Description Storage allocated for arrays of variable length have their storage deallocated when the block they are declared in exits. Storage allocated by __ALLOCA is not normally deallocated until function exit. Compaq C can not support both types of deallocation in the same block. Therefore, when both a vla array and an __ALLOCA call appear in the same block, the storage for both will be deallocated with the block exits. User Action Be aware of this. If the storage allocated for __ALLOCA must remain allocated until function exit, move the __ALLOCA call outside the block declaring the vla array.
41.428 - MIXVLAALLOCAV
Message Using both __ALLOCA and variable-length arrays in the same function is not allowed on this platform. The first call to __ALLOCA is at <where>. Description Because they place different requirements on stack allocation on VAX systems, __ALLOCA and variable-length arrays cannot be used in the same function. User Action Recode the function to use either variable-length arrays or __ALLOCA.
41.429 - MODNOIDSTR
Message Invalid identifier or character-string constant specification. Description If specified, the second argument to the #pragma module or #module directive must be either an identifier or a string constant. User Action Correct the directive.
41.430 - MODSTORCLS
Message Storage class modifier noshare has no meaning with this storage class. Modifier is ignored. Description The storage class modifier noshare is only valid for variables with a storage class of static, extern, or globaldef. It is ignored for other storage classes. User Action Remove the noshare storage class modifier.
41.431 - MODULEFIRST
Message "#pragma module" or "#module" directive must precede any language text. Description The #pragma module or #module directive must appear before any declarations. The directive will be ignored. User Action Move the directive to the top of the compilation unit.
41.432 - MSGPOP
Message This "restore" has underflowed the message stack. No corresponding "save" was found. Description The message stack, managed by the #pragma message and #pragma environment directives, contains more restores than saves. This could signify a coding or logic error in the program. User Action Make sure each restore has a corresponding save.
41.433 - MULTICHAR
Message A character constant includes more than one character or wide character. Description A character constant includes more than one character. While this is valid, it might not have been what you intended. User Action Verify that the constant should contain more than one character.
41.434 - MULTILINK
Message Multiple linkage pragmas specified for "<routine name>". Description The same routine appeared in more than one #pragma use_linkage directive. Each routine can only be given one linkage. User Action Remove the routine from all but one #pragma use_linkage directive.
41.435 - MULTILINKREG
Message The register "<register>" is specified more than once in the linkage pragma. Pragma is ignored. Description The same register was specified more than once in the same register list in a #pragma linkage directive. The compiler will ignore the entire pragma. User Action Correct the directive.
41.436 - MULTIMAIN
Message More than one main program has been defined. Description The compiler has encountered more than one main program in this compilation unit. Each program can have only one main program. User Action Remove one of the main programs.
41.437 - MULTIPSECTNAME
Message Multiple <psect_type> names specified. The name "<new_name>" supersedes "<old_name>". Description More than one #pragma code_psect or #pragma linkage_psect was encountered. The psect specified by the later #pragma supersedes the one specified earlier. This message is only output for C compilers on OpenVMS Alpha. User Action Each program should contain at most one #pragma code_psect and one #pragma linkage_psect.
41.438 - NAMESHORTENED
Message The external identifier "<name>" exceeds 31 characters. The name has been shortened to "<shortened spelling>". Description A compilation that used the /NAMES=SHORTENED qualifier has encountered a name that needs to be shortened. The external name will be different than the internal name. Also, because the external name exceeds the length specified by standard C as the minimum external length an implementation must support, this program does not strictly conform to standard C and might not be accepted by other C compilers. User Action Be aware of these items.
41.439 - NAMESLOWER
Message The /NAMES=LOWERCASE qualifier will be removed in a future version of the compiler. Use /NAMES=AS_IS if your application must generate global names in lowercase. Description While the C language has always required identifiers with internal linkage to be treated case sensitively,it traditionally permitted implementations to monocase identifiers with external linkage. Modern standards require C/C++ implementations to preserve the case of identifiers with external linkage. As VMS and other operating systems that traditionally implemented monocasing chose uppercase as the convention, /NAMES=LOWERCASE runs contrary both to the C and C++ standards and to traditional conventions. Continued support for this option interferes with support for compatibility between old code compiled with /NAMES=UPPERCASE and new code compiled with /NAMES=AS_IS. User Action Use /NAMES=AS_IS, making source code changes as needed.
41.440 - NEEDADDRCONT
Message <Context> "<name>" does not have a constant address, but occurs in a context that requires an address constant. Description A variable with static storage has been initialized to the address of an object whose address is not constant. This can happen if a static pointer variable is initialized to the address of an automatic variable. User Action Either make the initialize a constant, or, if possible, initialize the static storage using a run-time assignment.
41.441 - NEEDARITH
Message <Context> "<expression>" has <type> type, which is not arithmetic. Description An expression that must be an arithmetic type was not an arithmetic type. For example, the operands of an arithmetic operator such as * must be arithmetic type. User Action Modify the expression so that it is an arithmetic type.
41.442 - NEEDCONSTEXPR
Message <Context> "<name>" is not constant, but occurs in a context that requires a constant expression. Description An expression that must evaluate to a compile-time is not a constant. User Action Modify the constant expression so that it will evaluate as a compile-time constant.
41.443 - NEEDCONSTEXT
Message <Context> "<name>" is not constant, but occurs in a context that requires a constant expression. This is an extension of the language. Description The C89 standard requires that an initializer for an automatic aggregate or union type object have an initializer that is a list of constant expressions. Compaq C allows non-constants in these initializers. This is an extension to C89. Although this is allowed by the C99 standard, other C compilers might not successfully compile a program that uses this extension. User Action Be aware of this if you wish to port the program.
41.444 - NEEDDFLOAT
Message The CDD description for <name> specifies the D_Floating data type. The data can only be represented when compiling with /FLOAT=D_FLOAT. Description The /FLOAT command-line qualifier specified a floating type other than D_floating format. The CDD description specified was D_floating type, which did not match the floating type specified on the command line. User Action Specify the correct command-line qualifier, or change the description of the item in the CDD.
41.445 - NEEDFUNCPTR
Message <Context> "<expression>" points to <type> type, but occurs in a context that requires a pointer to a function type. Description An expression that must be a pointer to a function type is a pointer to an object or incomplete type. For example, if a function invocation expression is a pointer, it must be a pointer to a function type. User Action Modify the expression so that it is a pointer to a function type.
41.446 - NEEDGFLOAT
Message The CDD description for <name> specifies the G_Floating data type. The data can only be represented when compiling with /FLOAT=G_FLOAT. Description The /FLOAT command-line qualifier specified a floating type other than G_floating format. The CDD description specified was G_floating type, which did not match the floating type specified on the command line. User Action Specify the correct command line qualifier, or change the description of the item in the CDD.
41.447 - NEEDIEEE
Message The CDD description for <name> specifies a VAX floating data type. The data cannot be represented when compiling with /FLOAT=IEEE_FLOAT. Description The command-line qualifier /FLOAT=IEEE_FLOAT was specified, indicating that all floating-point data should be represented in IEEE-floating format, yet the CDD description specified a non-IEEE_floating type. User Action Specify the correct command-line qualifier, or change the description of the item in the CDD.
41.448 - NEEDIEEE1
Message The CDD description for <name> specifies an IEEE floating data type. The data can only be represented when compiling with /FLOAT=IEEE_FLOAT. Description The CDD description for an item specifies an IEEE floating point type. However this module was not compiled with the /FLOAT=IEEE_FLOAT qualifier. User Action Specify the correct command-line qualifier, or change the description of the item in the CDD.
41.449 - NEEDINTEXPR
Message <Context> "<expression>" has <type> type, which is not integral. Description An expression that must be an integer type was not integral. For example, an array-index specifier must be an integral type. User Action Modify the expression so that it is an integral type.
41.450 - NEEDLVALUE
Message <Context> "<expression>" is not an lvalue, but occurs in a context that requires one. Description An expression that must be an lvalue was not an lvalue. For example, the operand of the address-of operator must be an lvalue. User Action Modify the expression so that it is an lvalue.
41.451 - NEEDMEMBER
Message <Context> "<name>" is not a member of "<struct or union expression>". Description The second operand of a . or -> operator specifies a member name that is not a member of the struct or union type specified by the first operand. Note that in certain modes, Compaq C will search all other visible struct/union types for a matching member name. If it finds one, a diagnostic will be issued, and the offset of that name will be used. User Action Specify a valid member name.
41.452 - NEEDNONBLTIN
Message <Context> "<name>" is a builtin and cannot be used in this context. Description A program has used a builtin function in a way that is invalid for builtin functions. For example, a program cannot take the address of a builtin. User Action Remove the improper use of the builtin.
41.453 - NEEDNONCONST
Message <Context> "<expression>" has const-qualified type, but occurs in a context that requires a modifiable lvalue. Description The code has attempted to modify an object that is either a const-qualified type or has been declared with the readonly storage-class modifier. This is not valid. A typical example is assigning a value to a const variable. User Action Either remove the const qualifier from the object's type, remove the readonly storage-class modifier from the object declaration, or rework the code so that the object is not written to.
41.454 - NEEDNONVOID
Message <Context> "<expression>" has void type, but occurs in a context that requires a non-void result. Description An expression that must not be a void type was void. For example, the control expression for an if statement must not have void type. User Action Modify the expression so that it has the required type.
41.455 - NEEDPOINTER
Message <Context> "<expression>" has <type> type, but occurs in a context that requires a pointer. Description An expression that must be a pointer type was not a pointer type. For example, the operand of the dereference operator must be a pointer type. User Action Modify the expression so that it has a pointer type.
41.456 - NEEDPTROBJ
Message <Context> "<expression>" does not point to an object type. Description An expression that must be a pointer to an object type is a pointer to a function or incomplete type. For example, if a pointer is the operand of the postincrement operator, it must point to an object type. User Action Modify the expression so that it is a pointer to an object type.
41.457 - NEEDSCALAR
Message <Context> "<expression>" has <type> type, which is not scalar. Description An expression that must be a scalar type was not scalar. For example, only scalars can be cast to other types. User Action Modify the expression so that it is a scalar type.
41.458 - NEEDSCALARTYP
Message <Context> "<source type>" is <type> type, which is not scalar. Description In a cast expression, the destination type of the cast is not a scalar type. This is not valid. Both the source and target type of a cast must be scalars. User Action Modify the cast destination type so that it is a scalar type.
41.459 - NEEDSIMPLEASM
Message This asm is unsupported or illegal. Description The argument to the asm intrinsic is invalid. User Action Supply a valid argument to the asm instrinsic.
41.460 - NEEDSTRCONST
Message <Context> "<name>" is not a legal asm string, a string constant is required. Description The argument to the asm intrinsic must be a string constant. User Action Change the argument to be a string constant.
41.461 - NEEDSTRUCT
Message <Context> "<expression>" has <type> type, but occurs in a context that requires a union or struct. Description The left operand of the . or -> operator does not have struct or union type. User Action Correct the operand.
41.462 - NESTEDCOMMENT
Message Opening comment delimiter found inside a delimited comment; a previous comment may be missing its closing delimiter. Description C comments delimited by /* */ do not nest. When /* is encountered inside a delimited comment it usually means that the previous comment is missing its terminating */ or that the user has ill-advisedly attempted to "comment out" a section of code that contains a delimited comment. User Action It is traditional in C to use #if 0 to conditionalize out large sections of code. You may also want to consider //-style comments if the compiler modes you care about recognize them.
41.463 - NESTEDENUM
Message The type "<type>" is declared nested within "<enclosing type>". In C, the nesting is ignored and <type> and its enumerator constants can be accessed as if they were not nested. <However, the type and its enumerators are members in C++>. <Fix>. Description C allows types to be declared within other types. For example: struct S { int a; enum E { first, second, third} b; int c; }; In C++ the enum E would not be accessible without using the :: operator. User Action Declare the nested type before declaring the enclosing type.
41.464 - NESTEDTYPE
Message The type "<type>" is declared nested within "<enclosing type>". In C, the nesting is ignored and <type> can be accessed as if it were not nested. <However, the type is a member in C++>. <Fix>. Description C allows types to be declared within other types. For example: struct S { int x; struct S1 { int a; int b; } y; }; In C++ the struct S1 would not be accessible without using the :: operator. User Action Declare the nested type before declaring the enclosing type.
41.465 - NESTINCL
Message Files included by this file are referenced. However nothing else appears to be referenced from this file. Description When compiling with the current set of compilation options, to improve compilation efficiency, you may wish to include the files which this file includes directly, rather than including them from this file. User Action For compilation efficiency, you may exclude this include file when compiling with the current set of compilation options.
41.466 - NEWLOCALE
Message The compiler could not set its locale to the locale-specific native environment. This problem might be caused by an incorrect value for a name defined in your process environment such as "LC_ALL" or "LANG". The "C" locale will be used. Description During start-up, the compiler was unable to set its locale to the locale-specific environment. As part of its initialization, the compiler will issue the call setlocale(LC_ALL, ""). If this call fails, the compiler will set its locale to the "C" locale. In general, this message is output because the locale-specific native environment has been set incorrectly. User Action The best way to determine why the compiler was unable to set the locale is to write a small program that contains the library call setlocale(LC_ALL, "") and then examine the return value from the call.
41.467 - NLCHAR
Message An unexpected newline character is present in a character constant. Description An end of line was encountered during the scanning of a character constant. User Action Terminate the character constant with a closing single quote character before the end of line.
41.468 - NLHEADER
Message A newline occurs inside of a header name. Description An end of line was encountered before the closing double quote or angle bracket of an #include directive. User Action Terminate the directive argument properly.
41.469 - NLSTRING
Message An unexpected newline character is present in a string literal. Description An end of line was encountered during the scanning of a string literal. User Action Terminate the string constant with a closing double quote character before the end of line, or continue the line with a continuation character.
41.470 - NOADD
Message <Context> "<expression1>" and "<expression2>" cannot be added. Description Because of their types, the two expressions cannot be used as the operands of the addition operator. Either both operands must be arithmetic type, or one operand must be a pointer to an object type and the other must be an integral type. User Action Modify the addition to use valid types.
41.471 - NOBIFDISABLE
Message The function "<routine name>" is a builtin function reserved to the compiler, and cannot be used with #pragma function. The function will continue to be treated as a builtin. Description A function identifier specified in a #pragma function directive is the name of a builtin function. These functions cannot be explicitly disabled, they are always handled as builtin functions. User Action Remove the inappropriate use of the pragma, and change the name of the function in order to have it treated as an ordinary callable function.
41.472 - NOBITFIELD
Message <Context> "<expression>" is a bitfield, but occurs in a context that precludes bitfields. Description An expression that must not be a bitfield was a bitfield. For example, the operand of the address-of operator must not be a bitfield. User Action Modify the expression so that its type is not a bitfield type.
41.473 - NOCASEHERE
Message This case label occurs outside of any switch statement. Description A case label can only occur inside of a switch statement. User Action Remove the case label.
41.474 - NOCDDHERE
Message CDD is not available on this platform. The #dictionary directive has been ignored. Description The #dictionary directive requires CDD to be present on the platform. This directive will only be recognized on OpenVMS systems. User Action Remove the directive.
41.475 - NOCOLON
Message Missing ":". Description The compiler was expecting a colon, but one was not found. User Action Correct the program syntax.
41.476 - NOCOLONINEXPR
Message Missing colon for conditional expression. Description A conditional expression that occurs as part of a preprocessing expression was missing the ":" that separates the second from the third operand. The value of the resulting expression is undefined. User Action Correct the conditional expression.
41.477 - NOCOMMA
Message Missing ",". Description The compiler was expecting a comma, but one was not found. User Action Correct the program syntax.
41.478 - NOCONDEXPR
Message Missing #if conditional expression. Description An argument was not supplied to an #if or #elif preprocessing directive. The missing argument will cause the compiler to consider these as FALSE conditionals. User Action Supply a valid argument to the directive.
41.479 - NOCONVERT
Message <Context> "<expression>" is of type "<type>", and cannot be converted to "<target type>". Description An expression of one type cannot be converted to the type required by this expression. This most often occurs when the source type of an assignment or cast cannot be converted to the destination type. The rules for which types can be converted are rather complicated and differ based upon the compiler mode. Refer to the language documentation for a complete list of valid combinations. User Action Modify the conversion to use valid types.
41.480 - NOCONVERTCLS
Message <Context> "<expression>" is of type "<type>", and cannot be converted to a different "<type>" type. Description A struct or union of one type cannot be converted to a different struct or union type. User Action Modify the conversion to use valid types.
41.481 - NODCL
Message <Context> there is no declarator. Description A declaration contains a storage class and/or type specifier but no declarator. This might not have been what you intended. User Action Correct the declaration.
41.482 - NODEFAULTHERE
Message This default label occurs outside of any switch statement. Description A case default label can only occur inside of a switch statement. User Action Remove the case default label.
41.483 - NOENDIF
Message Missing #endif directive. Description The compiler encountered an #if, #ifdef, or #ifndef preprocessing directive without a matching #endif. This might not have been what you intended. The compiler will add the necessary #endif directive at the end of the compilation unit. User Action Make sure every #if, #ifdef and #ifndef has a matching #endif.
41.484 - NOEQUAL
Message Missing "=". Description The compiler was expecting to see an "=" after the secondary_name specification of a #pragma weak or #pragma external_name directive. This message is only output on UNIX. User Action Correct the #pragma directive.
41.485 - NOEQUALITY
Message <Context> "<expression1>" and "<expression2>" cannot be compared for equality or inequality. Description Because of their types, the two expressions cannot be compared for equality or inequality. The rules for which types can be compared are rather complicated and differ based upon the compiler mode. Refer to the language documentation for a complete list of valid combinations. User Action Modify the comparison to use valid types. This can often be done by casting one of the expressions to the type of the other.
41.486 - NOEXCEPTFLTR
Message <Context> this exception handling call is not within an exception filter of a try block. Description The exception handling call must appear within an exception filter of a try statement block. User Action Either remove the exception handling call, or place it in a try statement block.
41.487 - NOFBDAT
Message <text> does not contain feedback data Description The file indicated by the -feedback switch exists, but does not contain feedback data. This is probably an error on the users part, although it might be seen as part of the bootstrapping process. User Action Create a valid feedback file
41.488 - NOFBFIL
Message Feedback file <text> does not exist Description The file specified after the -feedback option does not exist. This is normal during the bootstrapping process. User Action Either correct the spelling of the feedback option, or create the required feedback file.
41.489 - NOFBOPT
Message Compilation will proceed without feedback optimizations Description A condition has occurred that has prevented the compiler from using feedback optimizations. This message is most often preceded by another message that will provide additional information. User Action Correct the condition that prevented the feedback optimizations.
41.490 - NOFBRTN
Message Feedback inactive for <text> in this compilation Description Feedback information has gone stale for a particular routine (the source for the routine has changed). Feedback optimizations will not be applied to this routine. User Action Create a new feedback file
41.491 - NOFIFILE
Message Cannot find include file <filename> specified on the command line. Description The header file name specified in the UNIX -FI command line option or the OpenVMS /FIRST_INCLUDE qualifier was not found using the search rules in effect for the quoted form of #include directives. User Action Either change the name of the file following the option or create the file.
41.492 - NOFNTPDEFDECL
Message There is no identifier named "<name>" declared as a function or function typedef in this compilation unit. Description A #pragma assert and/or #pragma linkage directive(s) contains an identifier that is not declared as a function or function typedef in the compilation unit. This may not have been what you intented. User Action Remove the identifier from the #pragma assert and/or #pragma linkage, or declare it as a function or function typedef. empty string.
41.493 - NOFORMALPARM
Message Missing formal parameter specifier. Description While processing the formal parameter list of a macro definition, the compiler encountered a missing formal parameter specifier. The macro will be be defined and this parameter ignored, but that may not have been what you intended. User Action Correct the formal parameter list so that it consists of a comma separated list of identifiers.
41.494 - NOFUNC
Message There is no function named <name> defined in this compilation unit. Description A function that appears in a #pragma weak and is not defined in the compilation unit. User Action Either define the function or remove the function name from the pragma.
41.495 - NOIDFOUND
Message <Context> an identifier was expected but not found. Description The compiler was expecting an identifier, but one was not found. User Action Correct the program syntax.
41.496 - NOIDINPACKPOP
Message pragma pack pop directive has no identifier <name> which was found on the top of the pack stack. Description The #pragma pack (pop) directive has no identifier specified while the top element of the pack stack has one. Either this #pragma pack pop should have the identifier found on the stack, or this is an extra pragma pack pop, or the identifier should not be pushed by the corresponding #pragma pack push. User Action Check whether the pragma pack pop should have the identifier. Verify that there's no extra #pragma pack pop or #pragma member_alignment restore which popped the identifier to the top of the pack stack. Correct the directive(s).
41.497 - NOINCLFILE
Message Cannot find file <filename> specified in #include directive. Description The specified include file does not exist. User Action Either change the name of the file in the #include preprocessing directive, or create the include file.
41.498 - NOINCLFILEF
Message Cannot find file <filename> specified in #include directive. Description The specified include file does not exist. User Action Either change the name of the file in the #include preprocessing directive, or create the include file.
41.499 - NOINCLUDEARG
Message #include directive missing argument. Description An argument was not supplied to an #include preprocessing directive. The directive will be ignored. User Action Supply a valid argument to the directive.
41.500 - NOINIT
Message The type of <variable> does not permit initialization. Description This type cannot be initialized. Only objects and arrays of unknown size can be initialized. User Action Remove the initializer.
41.501 - NOINLFUNC
Message There is no definition for the inline function named <name> in this compilation unit. Description A function that appears in a #pragma inline or #pragma noinline, or is declared with the __inline or __forceinline storage class modifier, is not defined in the compilation unit. User Action Either define the function or remove the function name from the pragma, or remove the storage class modifier or the function specifier from the declaration.
41.502 - NOINLINEM
Message The main function cannot be inlined. Description The C99 standard prohibits the inline keyword from being used on the main function. User Action Remove the inline keyword.
41.503 - NOINLINEREF
Message <Context> "<name>" has internal linkage and is referenced from an an inline auxiliary function. This is a violation of the C99 Standard. Description A function declared with the inline keyword and without a declaration containing the keyword, extern, or without a declaration which lacks the inline keyword and the static keyword declares an auxiliary inline declaration. A definition of an auxiliary inline shall not contain a definition of a modifiable object with static storage duration, and shall not contain a reference to an identifier with internal linkage. User Action Remove the inline keyword from all declarations of the parent function, or if it is appropriate, change the declaration of the referenced item to a declaration which has something other than internal linkage.
41.504 - NOINLINEST
Message In an inline auxiliary function, the modifiable object "<name>" is declared with static storage duration. This is a violation of the C99 standard. Description A function declared with the inline keyword and without a declaration containing the keyword, extern, or without a declaration which lacks the inline keyword and the static keyword declares an auxiliary inline declaration. A definition of an auxiliary inline shall not contain a definition of a modifiable object with static storage duration, and shall not contain a reference to an identifier with internal linkage. User Action Remove the inline keyword from all declarations of the parent function, or if it is appropriate, add the const keyword to the declaration to create an non-modifiable object.
41.505 - NOLEAVETARG
Message This leave statement is not within a try statement. Description The exception handling statement leave must appear within a try statement block. User Action Either remove the leave statement, or place it in a try statement block.
41.506 - NOLEFTOPERND
Message Token pasting operator missing left operand. Description The preprocessing token pasting operator "##" appears in a macro body without the preceeding token argument. User Action Either remove the operator or supply it with two tokens that will be pasted together.
41.507 - NOLINKAGE
Message <Context> "<name>" has no linkage and has a prior declaration in this scope at <where>. Description A declaration within a function body redeclares an identifier declared earlier in the current scope, and both declarations did not have the extern storage class. User Action Either remove the extra declarations, or have all declarations for the identifier use the extern storage class.
41.508 - NOLONGLONG
Message <Context> 64-bit integral types are not supported on this platform. Description 64-bit integer types are not supported on the VAX platform. User Action Change the type to an integer type that is supported on VAX, or compile the application on a platform that does support 64-bit integers.
41.509 - NOMACRONAME
Message #define directive is missing macro name identifier. Description The #define preprocessing directive was not supplied with an argument. The directive should be followed with an identifier that specifies the macro name to be defined. The directive will be ignored. User Action Supply a valid argument to the preprocessing directive.
41.510 - NOMAINUFLO
Message No main function encountered within module. /IEEE_MODE=UNDERFLOW_TO_ZERO is ignored. Description Use of the /IEEE_MODE=UNDERFLOW_TO_ZERO is only meaningful for compilation units that contain a main program. The compiler will ignore the qualifier. User Action Remove the qualifier from the command line.
41.511 - NONAMEMEMBERS
Message <Context> a struct or union has no named members. This is undefined behavior according to the C standard. Description The C standard requires that a struct or union contain at least one named member. Because this struct/union contains no named members, it does not conform to the C standard and might not be portable. User Action Make sure at least one member has a name.
41.512 - NONATOMIC
Message Unable to generate code for atomic access Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.513 - NONEWTYPE
Message The type "<type>" is being declared as part of <context>. C++ does not permit a new type to be declared in this context. <Fix>. Description C++ does not allow types to be declared in certain contexts that are valid in C. One example is the declaration of a type within a function prototype. User Action Declare the type before its use.
41.514 - NONLBEFOREEOF
Message File does not end in unescaped newline. Description The final character of a file was not a newline character. This could indicate that the file has been corrupted. The compiler will insert a newline character at this point in the input stream. User Action Update the source file so that it ends with a newline.
41.515 - NONMULTALIGN
Message The size of this structure is <size> bytes, which is not a multiple of its alignment of <align>. Respecify the alignment of the structure or add <bytes> bytes of additional padding. Description The size of a struct or union is not a multiple of its alignment. This could cause unaligned accesses if an array of these structs or unions is declared. User Action Modify the struct/union or the alignment so that the size of the struct or union is a multiple of the alignment.
41.516 - NONOCTAL
Message An octal constant contains non-octal digits. Description An octal constant contains a non-octal digit. The compiler will convert this non-octal digit to its corresponding octal value and use that value instead. For example, 0190 will be converted to 0210 (decimal 136) as the non-octal digit 9 is converted to the octal 11. User Action Correct the octal constant to use only octal digits.
41.517 - NONPORTDEFINED
Message "defined" is treated as an identifier here, not an operator. Description For compatibility with older C compilers, in certain modes the compiler will treat #ifdef defined(foo) as #ifdef defined, and #ifndef defined(foo) as #ifndef defined. This might not have been what you intended. User Action Do not mix #ifdef/#ifndef with the defined operator.
41.518 - NONPORTLINEDIR
Message Non-standard #line directive. Description Accepting the line directive without the "line" preprocessing keyword is an extension of Compaq C. The program does not conform to the C standard, and might not be accepted by other compilers. User Action Add the "line" preprocessing keyword to the directive.
41.519 - NONSTANDCAST
Message <Context> "<expression>" of type "<type>", is being converted to "<target type>". Such a cast is not permitted by the standard. Description The standard only permits casts from a pointer to an object incomplete type to another pointer to an object or incomplete type, or from a pointer to function type to another pointer to function type. Note that void is considered an incomplete type, so casts between pointer to void and pointer to function types are not permitted by the C standard. User Action Be aware of this difference if you plan to port this source to another compiler.
41.520 - NONULINIT
Message <Context> , there is no room for the terminating '\0'. Standard C allows this, but C++ does not. Description This declaration initializes an object to a strict literal. Although the object is large enough to hold the characters in the literal, it is not large enough to hold the terminating null character. This might not have been what you intended. This practice is also not valid in C++. User Action Increase the size of the object, or reduce the size of the initializer.
41.521 - NOOPERAND
Message Stringization operator missing operand. Description The preprocessing stringization operator "#" appears in a macro body without a token argument after the operator. User Action Either remove the operator or supply it with a token that will be stringized.
41.522 - NOOPERANDS
Message Token pasting operator missing both operands. Description The preprocessing token pasting operator "##" appears in a macro body without either the preceeding or following token arguments. User Action Either remove the operator or supply it with two tokens that will be pasted together.
41.523 - NOPARENARGLST
Message Missing right parenthesis for macro argument list. Description A macro invocation's argument list did not end in a right parenthesis. User Action Correct the program syntax.
41.524 - NOPARM
Message This declaration does not declare a parameter. Description The parameter declaration list of an old-style function definition included a type but no parameter identifier. User Action Replace the old-style function definition with the recommended prototype-format declaration. If this is not possible, include the correct identifier after the parameter type.
41.525 - NOPARMLIST
Message The declaration of <function> has an empty parameter list. If the function has parameters, they should be declared here; if it has no parameters, "void" should be specified in the parameter list. Description The recommended way to declare a function that takes no parameters is to use "void" in the parameter list. User Action Make the recommended change.
41.526 - NOPRAGARG
Message No argument for #pragma <pragma> was found. Pragma is ignored. Description A #pragma directive was not followed by one of the expected arguments. The directive will be ignored. User Action Supply all required arguments to the directive.
41.527 - NOPSECT
Message Missing psect name. Description The psect specifier in a globaldef declaration must be a string constant. User Action Either make the psect a string constant or remove the psect specifier.
41.528 - NOREGAVAIL
Message Unable to satisfy program register allocation requirements. Description The compiler is unable to allocate all the registers requested by the program. This most often happens when asm directives require too many registers. User Action Rework the asm directives so they use fewer registers
41.529 - NORELATIONAL
Message <Context> "<expression1>" and "<expression2>" cannot be compared with a relational operator. Description Because of their types, the two expressions cannot be used as the operands of a relational operator. The rules for which types can be used in a relational are rather complicated and differ based upon the compiler mode. Refer to the language documentation for a complete list of valid combinations. User Action Modify the relational to use valid types. This can often be done by casting one of the expressions to the type of the other.
41.530 - NORETNONVOID
Message noreturn assertion of #pragma assert directive can't be specified for non-void function. Description noreturn assertion was specified in #pragma assert directive for non-void function; the noreturn assertion will be ignored. User Action Either remove noreturn assertion from the directive, or change return type for the function to void.
41.531 - NORETURNVAL
Message The function "<name>" returns a value, but no value is given in this return statement. Description A function that returns a value contains a return statement that is missing a return value. Therefore, the returned value will be undefined. This might not have been what you intended. User Action Supply a return value for the return statement.
41.532 - NORETURNVAL1
Message The function "<name>" has an implicit return type of int, but no value is given in this return statement. Description A function that has an implicit return type of int contains a return statement that is missing a return value. Therefore, the returned value will be undefined. This might not have been what you intended. User Action Supply a return value for the return statement or define the function with a void return type.
41.533 - NORETVAL
Message routine <text> does not return a value Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.534 - NORGHTPAREN
Message No right parenthesis for parameter list. Description A macro definition's formal parameter list did not end in a right parenthesis. A right parenthesis has been assumed. User Action End the formal parameter list with a right parenthesis.
41.535 - NORIGHTOPERND
Message Token pasting operator missing right operand. Description The preprocessing token pasting operator "##" appears in a macro body without a token argument after the operator. User Action Either remove the operator or supply it with two tokens that will be pasted together.
41.536 - NORIGHTPAREN
Message Missing ")". Description A right parenthesis was expected at this point in the program, but none was found. User Action Correct the program syntax.
41.537 - NOSEHHAND
Message Missing exception handler. Description The __builtin_try clause must specify an exception handler of either __builtin_finally or __builtin_except. This message is only generated on UNIX systems. User Action Correct the __builtin_try clause.
41.538 - NOSEMI
Message Missing ";". Description The compiler was expecting a semicolon, but one was not found. User Action Correct the program syntax.
41.539 - NOSEMI1
Message Missing ";". This condition may have been caused by an open brace without a matching close brace. The compiler will attempt to identify open braces that might be missing a close brace. Description The compiler was expecting a semicolon, but one was not found. This condition may have been caused missing close brace. This message is followed by some number of additional messages that attempt to identify the bad open brace. User Action Correct the program syntax.
41.540 - NOSEMISTRUCT
Message Missing ";" after last structure or union member. Description Accepting a struct/union type without a semicolon after the last member specifier is a language extension of Compaq C provided for compatiblity with older C compilers. This syntax is not valid in standard C, and may not be accepted by other C compilers. User Action Add the semicolon at the end of the last member.
41.541 - NOSFILE
Message Cannot create .s file: overlapping static storage initializations at Psect <text> + <number> Description When producing an output assembly file, the compiler back-end as detected a case where the same storage location has been initialized to more than one value. This can occur when inter-file optimization has been enabled. User Action Remove one of the initializers.
41.542 - NOSHAREEXT
Message noshare is a language extension. Description The noshare storage class modifier is a language extension of Compaq C. Other C compilers might not successfully compile a program that uses the extension. User Action Be aware of this extension if you wish to port the code.
41.543 - NOSHRINSHR
Message Noshare variable resides in shr extern model - noshare ignored. Description The current extern model places all external objects in a shareable section. Placing an object with a noshare type qualifier in such a section is invalid. The compiler will ignore the noshare type qualifier User Action Place noshare objects in sections with the noshare attribute.
41.544 - NOSTRING
Message Missing string literal. Description The compiler was expecting a string literal, but one was not found. User Action Correct the program syntax.
41.545 - NOSUBTRACT
Message <Context> "<expression2>" cannot be subtracted from "<expression1>". Description Because of their types, the two expressions cannot be used as the operands of the subtraction operator. Either both operands must be arithmetic type, or both operands must be pointers to qualified or unqualified versions of compatible object types, or the left operand must be a pointer type and the right operand must be an integral type. User Action Modify the subtraction to use valid types.
41.546 - NOTADDRCAST
Message <Context> the address constant "<expression>" can be cast only to a pointer type, but "<type>" is <type class> type. Description An address constant can only be cast to a pointer type. User Action Correct the cast.
41.547 - NOTAREDUCTION
Message bad reduction path from fetch of <text> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.548 - NOTCOMPAT
Message <Context> the type of "<name>" is not compatible with the type of a previous declaration of "<name>" at <location>. Description The same identifier has been redeclared with a type that is incompatible with the type given in a previous visible declaration. In some modes, the compiler will use the redeclared type as the type of the identifier. User Action Change the declarations to use compatible types.
41.549 - NOTCOMPATIMP
Message <Context> the type of the function "<name>" is not compatible with the earlier implicit declaration of "<name>" at <location>. Description The declared type of a function does not match the type given to the function by its earlier implicit declaration. This may cause unexpected behavior. User Action Make sure that a valid function declaration is visible at the point in the source where the function is first called.
41.550 - NOTCOMPFUNC
Message <Context> an invalid redeclaration of "<name>" to or from a function type is being ignored. Description In certain modes, the compiler will allow an identifier to be redeclared with a different type. In this case, the type of the redeclaration is used. However, in cases where the identifier is redeclared to or from a function type, the redeclaration is ignored. User Action Remove the redeclaration of the identifier.
41.551 - NOTCONSTQUAL
Message <Context> the referenced type of the pointer value "<expression>" is const, but the referenced type of the target of this assignment is not. Description In an assignment of two pointer types, the type pointed to by the destination operand must have all the type qualifiers of the type pointed to by the source operand. In this case, the type pointed to by the source has the const type qualifier, but the type pointed to by the destination does not. User Action Correct the assignment to use compatible types. This can be done by inserting a cast operand.
41.552 - NOTEXPECTING
Message Error parsing <what>. Found "<found>" when expecting <expecting>. Description While parsing the program, the compiler has encountered something unexpected. The message will detail what the compiler was trying to parse and the item that was invalid, and will also produce a list of those items it was expecting to find. User Action Correct the offending section of the program.
41.553 - NOTINTRINSIC
Message The function "<routine name>" is not a known intrinsic function and cannot be used with #pragma function. The function is unaffected by this pragma. Description A function identifier specified in a #pragma function directive is not a valid intrinsic function on this platform. The function is thus never treated as an intrinsic, and so #pragma function can never be applicable to it. Perhaps the name was misspelled, or perhaps the function was thought to be intrinsic, possibly because it is intrinsic on some other platform. In the latter case, the desired result, that the function not be treated as intrinsic, would happen with or without the pragma. User Action Either correct the identifier spelling or remove the use of the pragma.
41.554 - NOTLOCALPARM
Message <Context> "<identifier>" is not a local parameter. Description The second argument to the variable argument list va_start macro is not a formal parameter of the current function. The second argument to va_start should be the rightmost parameter in the function definition. User Action Correct the second argument to va_start.
41.555 - NOTONEORZERO
Message <Context> the value of "<expression>" is neither 0 nor 1. Description The __builtin_va_start macro has been used incorrectly. User Action Correct the use of the macro.
41.556 - NOTPARM
Message <Context> <name> is not a parameter. Description The identifier name in the parameter declaration does not match a name in the identifier list of an old-style function definition. User Action Correct either the identifier in the declaration or in the identifier list so that they match. Compaq also recommends that old-style function definitions be replaced by prototype-format definitions.
41.557 - NOTPOSINT
Message <Context> the array bound "<expression>" is not a positive integer. Description The compiler has encountered an array-bounds specifier that is either zero or negative. Array-bounds specifiers must be positive integer constants. User Action Correct the array-bounds specifier
41.558 - NOTRESTQUAL
Message <Context> the referenced type of the pointer value "<expression>" is restrict, but the referenced type of the target of this assignment is not. Description In an assignment of two pointer types, the type pointed to by the destination operand must have all the type qualifiers of the type pointed to by the source operand. In this case, the type pointed to by the source has the restrict type qualifier, but the type pointed to by the destination does not. User Action Correct the assignment to use compatible types. This can be done by inserting a cast operand. Note that care should be taken in assigning to a restricted pointer type.
41.559 - NOTRIGHTMOST
Message <Context> "<identifier>" is not the rightmost parameter to "<function>". Description The second argument to va_start was not the rightmost parameter in the variable parameter list in the function definition. This is an invalid argument to va_start. Other compilers might not accept this program. User Action Update the second argument to va_start to use the rightmost parameter.
41.560 - NOTSCALARCTRL
Message The controlling expression "<expression>" has <type> type, which is not scalar. Description An execution control expression does not have scalar type. This is not valid. An example of an execution control expression is the expression following the while keyword in a while statement. User Action Change the control expression to have scalar type.
41.561 - NOTTYPEDEF
Message <Context> "<name>" does not name a type. Description This message is output when the compiler encounters an identifier that it believes is a typedef and no valid typedef by this name is defined in the current scope. This most often occurs when there was an error in the declaration of the typedef name. User Action Correct the declaration of typedef.
41.562 - NOTUNALQUA
Message <Context> the referenced type of the pointer value "<expression>" is __unaligned, but the referenced type of the target of this assignment is not. Description In an assignment of two pointer types, the type pointed to by the destination operand must have all the type qualifiers of the type pointed to by the source operand. In this case, the type pointed to by the source has the __unaligned type qualifier, but the type pointed to by the destination does not. User Action Correct the assignment to use compatible types. This can be done by inserting a cast operand.
41.563 - NOTVOLQUAL
Message <Context> the referenced type of the pointer value "<expression>" is volatile, but the referenced type of the target of this assignment is not. Description In an assignment of two pointer types, the type pointed to by the destination operand must have all the type qualifiers of the type pointed to by the source operand. In this case, the type pointed to by the source has the volatile type qualifier, but the type pointed to by the destination does not. User Action Correct the assignment to use compatible types. This can be done by inserting a cast operand.
41.564 - NOTYPES
Message Declaration has no type or storage class. Description A file-scope declaration contains no type and no storage-class specifier. In some modes, the Compaq C compiler will treat this as a tentative definition of an int variable. Accepting this declaration is an extension to standard C provided for compatibility with other compilers. User Action Rewrite the declaration to contain a data type and/or storage class.
41.565 - NOUNIQFORMALS
Message Non-unique formal parameter definition. Description The same name has been used for more than one formal parameter in a macro definition. Any occurrence of the name in the macro body will correspond to the last formal parameter given this name. User Action Each macro formal parameter should have a unique name.
41.566 - NOWHILE
Message Missing "while". Description While processing a do statement, the compiler did not find a while clause. User Action Supply a while clause for the do statement.
41.567 - OBJECTTOOBIG
Message The size of "<name>" exceeds the maximum size of an object allowed on this platform which is <size> bytes. Description An object has been declared with a size that is too large for this platform. User Action Reduce the size of the object.
41.568 - OKCPPINARGS
Message "#<directive>" directive within a macro argument list is not portable. Description Compaq C/C++ will allow certain directives to appear within the argument list of a macro invocation. This might not be portable. User Action If possible, rewrite the macro invocation.
41.569 - OPENBRACE
Message Missing "{". Description The compiler was expecting an open brace, but one was not found. User Action Correct the program syntax.
41.570 - OPENCOMMENT
Message A comment is not terminated. Description The end of a file was reached while within a comment. The message will indicate the start of the comment. All source files, even those included via the #include preprocessing directive, must not end in a pending comment. User Action Terminate the comment before the end of the source file.
41.571 - OPENPAREN
Message Missing "(". Description The compiler was expecting an open parenthesis, but one was not found. User Action Correct the program syntax.
41.572 - OPTIMIZEPOP
Message This "restore" has underflowed the pragma optimize stack. No corresponding "save" was found. Description The optimize stack, managed by the #pragma optimize and #pragma environment directives, contains more restores than saves. This could signify a coding or logic error in the program. User Action Make sure each restore has a corresponding save.
41.573 - OPTLEVEL
Message Invalid optimization level <number>, defaulted to <number>. Description An optimization level that is outside the range of valid optimization levels has been specified. The compiler will default to the stated level. User Action Supply a valid optimization level on the command line.
41.574 - OTHERDECLUSED
Message <Context> "<name>" is not declared in a scope active at this point in the compilation. However, there is a declaration of this identifer with extern storage class in another scope at <where>. This declaration will be used. Description In some modes, if the compiler cannot find the declaration of an object in the current scope, it will search other scopes for extern declarations of that object. If it finds such a declaration, it will be used. Note that this is a language extension provided for compatibility with other compilers. User Action Declare the object so that it is visible at all places it is referenced.
41.575 - OTHERMEMBER
Message <Context> "<name>" is a member of another struct or union. Description In certain modes, the compiler will allow a struct or union reference whose right operand is not a member of the struct or union type of the left operand. This is allowed for compatibility with other compilers. User Action Correct the struct or union reference so that the member specifier is a member of the type of the left operand.
41.576 - OUTARGPREC
Message <Context> the type of this argument to <function name> is not appropriate for the precision argument of the conversion specifier "<incorrect conversion>". Behavior can be unpredictable. Description This argument corresponds to an output precision specification. C requires that this argument have integer type, and it does not. User Action Cast the argument to an int type.
41.577 - OUTARGWIDTH
Message <Context> the type of this argument to <function name> is not appropriate for the width argument of the conversion specifier "<incorrect conversion>". Behavior can be unpredictable. Description This argument corresponds to an output width specifier. C requires that this argument have integer type, and it does not. User Action Cast the argument to an int type.
41.578 - OUTFLOATINT
Message <Context> this argument to <function name> and conversion specifier "<incorrect conversion>" combine integer and floating-point types. Behavior can be unpredictable. Description The compiler has detected an output conversion specifier whose data type does not match its corresponding argument in a way that will cause unpredictable behavior. User Action Modify either the argument or the conversion specifier so that they match.
41.579 - OUTSTRINGTYPE
Message <Context> this argument to <function name> is of "<type name>" type and is not appropriate for the conversion specifier "<incorrect conversion>". The value will be formatted in an unintended manner. Description The compiler has detected a string conversion specifier that does not match its corresponding argument. This might not have been what you intended. User Action Modify either the argument or the conversion specifier so that they match.
41.580 - OUTTOOFEW
Message <Context> the number of conversion specifiers to <function name> exceeds the number of values to be converted. Conversion specifiers from "<last valid conversion>" onward will process meaningless and perhaps invalid data. Description The number of conversion specifiers is greater than the number of values to be converted as specified in the parameter list. This is probably not what you intended. User Action Make sure the number of conversion specifiers match the values to be converted.
41.581 - OUTTOOMANY
Message <Context> additional arguments to <function name> are provided for which there are no conversion specifiers in the format string. Arguments from "<last expression>" onward will be evaluated, but not processed by <function name>. Description The number of conversion specifiers is less than the number of values to be converted as specified in the parameter list. This is probably not what you intended. User Action Make sure the number of conversion specifiers match the values to be converted.
41.582 - OUTTYPELEN
Message <Context> this argument to <function name> is of "<typeclass>" type and is not appropriate for the conversion specifier "<incorrect conversion>". The value might be truncated or formatted in an unintended manner. Description The compiler has detected an output conversion specifier that does not match its corresponding argument. This might not have been what you intended. User Action Modify either the argument or the conversion specifier so that they match.
41.583 - OUTVARORDER
Message <Context> variable ordering is used in a conversion specifier for <function name>. If variable ordering is used, it must be specified for all conversions. Description A conversion specification can contain only one type of conversion specification - % or %n$. Mixing them will cause unpredictable behavior. User Action Change the format specification to use only one type of conversion specification.
41.584 - PACKSTACKPOP
Message This "pop" has underflowed the pragma <stack name> stack. No corresponding "push" was found. Description The member_alignment/pack stack, managed by the #pragma pack and #pragma member_alignment directives, contains more pops/restores than pushes/saves, This could signify a coding or logic error in the program. User Action Make sure each pop/restore has a corresponding push/save.
41.585 - PARAMREDECL
Message <Context> "<name>" overrides a formal parameter declared at <where>. Description A declaration within a function body redeclares a formal parameter. User Action Change the name of either the formal parameter or the declared variable.
41.586 - PARENLITERAL
Message <Context> accepting a string literal in parentheses as the initializer for a character array is a language extension. Description The compiler accepts this kind of initializer for compatibility with many other C compilers. According to the C standard, a string literal in parentheses is a character pointer. Therefore, this program does not conform to the standard and may be rejected by other compilers. User Action Remove the parentheses.
41.587 - PARMINCOMP
Message <Context> the parameter <name> has an incomplete type. Description The parameter of an old-style function definition has an incomplete type. This is not valid. User Action Complete the type before the declaration of the parameter. Compaq also recommends that old-style function definitions be replaced by prototype-format definitions.
41.588 - PARMINIT
Message <Context> a parameter declaration cannot include an initializer. Description The parameter declaration list of an old-style function definition included an initializer. This is not valid. User Action Remove the initializer from the declaration and initialize the parameter in the function body. Compaq also recommends that old-style function definitions be replaced by prototype-format definitions.
41.589 - PARMSTORCLS
Message <Context> a parameter has an explicit storage class other than "register". Description The only storage class that can be specified for a formal parameter is "register". User Action Either remove the storage class or use "register" if that is desired.
41.590 - PARMSTORMOD
Message <Context> a parameter cannot have a storage class modifier. Description A formal parameter cannot be declared with a storage class modifier. User Action Remove the storage class modifier.
41.591 - PARMTYPLIST
Message Ill-formed parameter type list. Description While processing a function declaration, an invalid parameter type list was encountered. User Action Correct the program syntax.
41.592 - PARNOIDENT
Message Missing identifier. Description While processing an old-style function definition, the compiler was expecting an identifier, but one was not found. User Action Correct the program syntax. Compaq also recommends that old-style function definitions be replaced by prototype-format definitions.
41.593 - PDBOPERR
Message Error opening PDB file <text>: <text> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.594 - PDBTYPERR
Message Error adding type record to PDB file: <text> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.595 - PDOINDEXNOTPRIV
Message index variable of PDO <text> is not a private variable Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.596 - PDONEINSTATIC
Message pdone <text> in statically-scheduled PDO will be ignored Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.597 - PDONENOTINPDO
Message pdone <text> is not nested in a PDO Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.598 - PLUSWSTOCLS
Message The use of the <spelling> option has prevented this redeclaration of "<variable>" from changing its linkage. The linkage will be that specified by the earlier declaration at <location>. Description In many cases, the compiler will allow a redeclaration of an item to change its linkage. For example, in most modes, if an object is declared with extern linkage and later with static linkage, the compiler will give it static linkage. This changing of linkage usually causes a warning to be issued. However, in cases where interfile optimization has been selected (-ifo on UNIX, /PLUS_LIST_OPTIMIZE on OpenVMS), the compiler cannot allow a later declaration to modify the linkage of a previous declaration. User Action Change all declarations to use the same linkage.
41.599 - POINTERINTCAST
Message <Context> the 64-bit pointer "<expression>" is being cast to an integer type that is only <size> bits in size. This behavior is undefined. Description Casting a 64-bit pointer to a shorter integer type is undefined behavior. This also could indicate code that relies on pointers and integers being the same size. The code will cause an unexpected loss of data on 64-bit platforms. User Action If this is the intended behavior, first cast the pointer to a 64-bit integer, then cast the result to the desired integer type.
41.600 - POPMISMATCH
Message The member alignment popped/restored with pragma <pragma name> was saved using pragma <pragma name>. The member alignment restored will take effect. Description Compaq C supports two forms of the member alignment directives. One begins with #pragma pack, the other with #pragma member_alignment. A program has mixed the pack and the member_alignment form of the directives in a way that is not recommended. This might indicate a programming error. User Action If a member alignment has been saved by one form of the member-alignment directive, it should be restored by the same form of the directive.
41.601 - PRAGIGNORE
Message The pointer size control <name> pragma is not active. Pragma is ignored. Description Either one of the pragmas that used to control pointer size has been specified on a platform that does not support mixed pointer sizes, or the #pragma pointer_size directive has been used without the appropriate command-line option or qualifier. In all cases, the directive is ignored. User Action Either remove the directive or add the appropriate command-line option.
41.602 - PRAGMA
Message Strict standard C extension: A #pragma directive was encountered. Description As the purpose of a #pragma directive is to specify implementation-defined behavior, it is likely that other C compilers will not treat this pragma in the same way Compaq C/C++ will. User Action Be aware of this if you wish to port the program.
41.603 - PRAGMAIDENT
Message Please use the preferred "#pragma ident" directive in place of the "#ident" directive. Description The #ident directive is a language extension. Other C compilers might not accept it. User Action Use the portable #pragma ident directive instead.
41.604 - PRAGMAINBLK
Message The pragma <name> cannot be used inside a function block. Description This #pragma directive is only permitted at file scope, outside of all function definitions. User Action Move the directive to file scope, preceding the function definition that is to be affected. To limit the pragma to just that particular function, sandwich the #pragma and the function definition between a pair of matching pragmas with the save and restore keywords.
41.605 - PRAGMAMOD
Message Please use the preferred "#pragma module" directive in place of the "#module" directive. Description The #module directive is a language extension. Other C compilers are unlikely to accept it. User Action Use the portable #pragma module directive instead.
41.606 - PRAGMAOPTDUP
Message This #pragma optimize has already modified this optimization setting. This setting will replace the old. Description A #pragma optimize has specified the same optimization setting more than once. The later setting will replace the previous one. User Action Remove the earlier setting.
41.607 - PRAGMAOPTLVL
Message The level set by a #pragma optimize directive must be between 0 and 5. Pragma is ignored. Description A #pragma optimize has tried to set the optimization level to a value outside the valid range. The compiler will ignore the directive. User Action Set the optimization level to a number from 0 to 5.
41.608 - PRAGMAOPTSPEC
Message Setting speculation control is not available on this platform. The setting will be ignored. Description Setting speculation control in only available on certain platforms. Trying to modify the setting on other platforms will have no effect. User Action Remove the speculation setting.
41.609 - PRAGMAOPTZERO
Message If a #pragma optimize specifies level=0, that must be the only optimization setting specified by the pragma. Pragma is ignored. Description If a #pragma optimize specifies level=0, that must be the only optimization setting specified by the pragma. The compiler will ignore the directive. User Action Remove the other settings specified by the directive.
41.610 - PREOPTE
Message An error was detected in the processing of a <option spelling> option: <#define or #undefine problem> Description An error was encountered during the processing of a macro definition specified on the command line. The message should provide additional information about the error. User Action Correct the command line argument.
41.611 - PREOPTW
Message A problem was detected in the processing of a <option spelling> option: <#define or #undefine problem> Description A problem was encountered during the processing of a macro definition specified on the command line. The message should provide additional information about the problem. User Action Correct the command-line argument.
41.612 - PREPROCOUT
Message An error occurred while attempting to open the preprocessor output file: <problem>. Description An unexpected error occurred during the creation of a preprocessor output file or a dependency file. The message text will contain additional information about the failure. User Action Correct the condition that caused the failure.
41.613 - PRIVATENOTSHARE
Message variable <text> on a local or lastlocal list is not declared in a shared scope. Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.614 - PROMOTMATCH
Message <Context> the promoted type of <name> is incompatible with the type of the corresponding parameter in a prior declaration. Description The promoted type of a parameter of an old-style function declaration does not match the type given earlier in a prototype declaration of the function. User Action Correct the data types so they match. Compaq also recommends that old-style function definitions be replaced by prototype-format definitions.
41.615 - PROMOTMATCHW
Message <Context> the promoted type of <name> is incompatible with the type of the corresponding parameter in a prior declaration. Description The promoted interger or floating type of a parameter of an old-style function declaration does not match the integer or floating type given earlier in a prototype declaration of the function. User Action Correct the data types so they match. Compaq also recommends that old-style function definitions be replaced by prototype-format definitions.
41.616 - PROTOF
Message An error occurred while attempting to open the prototype output file: <problem>. Description An unexpected error occurred during the creation of a prototype output file. The message text will contain additional information about the failure. User Action Correct the condition that caused the failure.
41.617 - PROTOSCOPE
Message The type "<type>" has been declared within and is limited to a function prototype scope. It will not be compatible with an identical type declared in another scope. This might not be what you intended. Description A type is declared within a function prototype. The type is local to the function prototype and will not be visible outside the prototype. This might cause unexpected errors later in the compilation. User Action Declare the type before the function prototype.
41.618 - PROTOSCOPE2
Message <Context> the struct type was previously declared with prototype scope in this function. Now it is declared with a different prototype scope. Description This function declaration contains a parameter that is a pointer to a type that has prototype scope, and an earlier declaration of the function contains a parameter that is also a pointer to a type that has a different prototype scope. In most compiler modes this will cause the function redeclarations to differ. User Action Avoid declaring types with function prototype scope.
41.619 - PROTOSCOPE3
Message <Context> the struct type was previously declared in this function with prototype scope. Now it is declared with file scope. Description This message is generated when the compiler first encounters a function prototype that declares a type with prototype scope, and then later sees a second declaration or definition of that same function with the parameter declared using the same type declared at file scope. For example: void foo(struct S { int a; int b;} *s); struct S { int a; int b;} s; void foo(struct S *s); User Action Declare the type at file scope before the first prototype declaration.
41.620 - PROTOSTATIC
Message The extracted header file contains prototypes for static functions, which should be removed before including the header in a source file other than the originator. Description When extracting function prototype declarations, the compiler has encountered a static function. The prototype declaration placed in the output .H file should be removed if the .H file is included in any source other than that used to create the .H file. This is because those static functions may not be declared in the other files. This message can only be generated when the compiler has been invoked with the option to extract function prototype declarations, and the suboption to generate prototypes for static functions has also been specified. User Action Be aware of this if you wish to use the output .H file in a file other than the one from which the .H file was generated.
41.621 - PROTOTAG
Message The extracted header file contains prototypes with tag names, which should be moved to after the tag name declaration. Description When extracting function prototype declarations, the compiler has encountered a parameter type specifier that references a tag. Because the created prototype will use this tag, it should be moved after the tag declaration in the final compilation source. This message can only be generated when the compiler has been invoked with the option to extract function prototype declarations. User Action Be aware of this if you wish to use the output .H file.
41.622 - PROTOTYPEDEF
Message The extracted header file contains prototypes with typedefs, which should be moved to after the typedef declaration. Description When extracting function prototype declarations, the compiler has encountered a parameter type specifier that is defined by a typedef. Because the created prototype will use this typedef, it should be moved after the typedef declaration in the final compilation source. This message can only be generated when the compiler has been invoked with the option to extract function prototype declarations. User Action Be aware of this if you wish to use the output .H file.
41.623 - PROTOVLA
Message The extracted header file contains prototypes for functions which have formal parameters with variably modified type. All variable length bound specifiers have been replaced by a "*" signifying a variable length array of unspecified size. Description When extracting function prototype declarations, the compiler has encountered a function or functions which have a formal parameter with variably modified type. The compiler is unable to recreate the source that specified the number of array elements. Instead, the output prototype will use the "*" bounds specifier. Note that the output prototype is valid for the function. User Action Be aware that the compiler has made this minor change to the function declaration.
41.624 - PSECTFIRST
Message "#pragma <psect_type>" directive must precede any declarations. Description The #pragma code_psect or #pragma linkage_psect directives must appear before any function or external data definitions. User Action Place the directive earlier in the source program.
41.625 - PSECTTOOLONG
Message Psect name is too long (maximum is 31 characters). Pragma is ignored. Description A psect name specified in a #pragma code_psect, #pragma linkage_psect, or #pragma extern_model directive must be less than 32 characters in length. The compiler will ignore the directive. User Action Shorten the psect name.
41.626 - PTRINTTOLONG
Message <Context> "<expression>", a pointer to a 32-bit integer, is being cast to a pointer to a 64-bit integer. This may lead to unintended results. Description On many platforms long integers are the same size as integers, and casting a pointer to int to a pointer to long int is not a problem. On this platform long integers are 64-bits. This cast could indicate a potential porting problem. User Action Verify that this is the intended behavior.
41.627 - PTRLONGTOINT
Message <Context> "<expression>", a pointer to a 64-bit integer, is being cast to a pointer to a 32-bit integer. This may lead to unintended results. Description On many platforms long integers are the same size as integers, and casting a pointer to long int to a pointer to int is not a problem. On this platform long integers are 64-bits. This cast could indicate a potential porting problem. User Action Verify that this is the intended behavior.
41.628 - PTRMISMATCH
Message <Context> the referenced type of the pointer value "<expression>" is "<type>", which is not compatible with "<target type>". Description In a pointer assignment, the type pointed to by the source pointer is different than the type pointed to by the destination pointer. User Action Correct the assignment to use compatible types. This can be done by inserting a cast operand.
41.629 - PTRMISMATCH1
Message <Context> the referenced type of the pointer value "<expression>" is "<type>", which is not compatible with "<target type>" because they differ by signed/unsigned attribute. Description In a pointer assignment, the type pointed to by the source pointer is different than the type pointed to by the destination pointer. In this case the types differ because the signed/unsigned type attributes are different. User Action Correct the assignment to use compatible types. This can be done by inserting a cast operand.
41.630 - QUALAFTCOMMA
Message Type qualifier(s) after a comma ignored. Description In Microsoft mode, the compiler used to accept a type qualifier after a comma used for separating declarators. Because Microsoft no longer accepts this type of declaration, Compaq C will no longer accept it. The type qualifier is ignored. User Action Remove the type qualifier.
41.631 - QUALFUNCRET
Message The return type of "<name>" is a qualified type. Type qualifiers have no meaning for function return values. Description A type qualifier has been used as part of the type of a function return value. The type qualifiers have no meaning for function return values. User Action Remove the type qualifier.
41.632 - QUALISPTR
Message <Context> "<expression>" has a pointer type, but occurs in a context that expects a struct or union. Description The left operand of the struct/union member operator (.) is a pointer type instead of a struct or union type. User Action Specify the correct struct or union type object as the left operand. In cases where the left operand is a pointer to a struct or union, it might be possible to use the struct/union pointer operator (->) instead of the member operator.
41.633 - QUALNOTUS
Message <Context> the qualifier for "<name>" is not a struct or union. Description In certain modes, the compiler will allow the left operand of a struct/union member reference to be certain types other than a struct or union type. In these cases the compiler will issue a warning that this non-standard syntax is being accepted. User Action Modify the left operand to be a struct or union type.
41.634 - QUESTCOMPARE
Message <Context> the unsigned expression "<expr>" is being compared with a relational operator to a constant whose value is not greater than zero. This might not be what you intended. Description An ordered comparison between an unsigned value and a constant that is less than or equal to zero often indicates a programming error. Humans consider an unsigned value to be larger than any negative value. But in C a negative value is converted to an unsigned value before the comparison, so any negative value compares larger than most unsigned values. An ordered comparison of an unsigned value to zero suggests a programming error because the value can only be greater than or equal to zero. If the code is correct, the comparison could be more clearly coded by testing for equality with zero. User Action Cast (or otherwise rewrite) one of the operands of the compare to match the signedness of the other operand, or compare for equality with zero.
41.635 - QUESTCOMPARE1
Message <Context> the unsigned expression "<expr>" is being compared with an equality operator to a constant whose value is negative. This might not be what you intended. Description An unsigned value and a signed constant whose value is negative are being compared for equality. Logically, these value would never be equal. But in C the negative constant value is converted to an unsigned value before the comparison, and may well compare equal. User Action Cast (or otherwise rewrite) one of the operands of the compare to match the signedness of the other operand.
41.636 - QUESTCOMPARE2
Message <Context> the unsigned expression "<expr>" is being tested to see if it is greater than zero. This might not be what you intended. Description An ordered comparison between an unsigned value and a constant that is zero may indicate a programming error. Often C programmers do not realize that an expression has an unsigned type. If the code is correct, the comparison could be more clearly coded by testing for equality with zero. User Action Cast (or otherwise rewrite) one of the operands of the compare to match the signedness of the other operand, or compare for equality with zero.
41.637 - READONLYEXT
Message readonly is a language extension. Description The readonly storage class modifier is a language extension of Compaq C. Other C compilers might not successfully compile a program that uses the extension. User Action Be aware of this extension if you wish to port the code.
41.638 - REDECLNOPARAM
Message <Context> the declaration of the function "<name>" containing no parameter information replaces an earlier declaration of "<name>" at <location>. Description A function which was previously declared with a function prototype has been redeclared without parameter information. This is a violation of the C standard. The Compaq C compiler will accept this for compatibility with older compilers. User Action Remove one of the declarations.
41.639 - REDEF
Message This declaration contains a redefinition of "<name>". The previous declaration is at <location>. Description This declaration has tried to redefine an identifier that was defined earlier. This is not valid. User Action Remove one of the definitions.
41.640 - REDEFSTRUCT
Message <Context> the struct "<name>" is redefined. Description The struct tag declared in this declaration is already declared as a struct tag by another declaration. User Action Change the name of the struct tag.
41.641 - REDEFTAG
Message <Context> the tag "<name>" is redeclared. Description The tag declared in this declaration is already declared. User Action Change the name of the tag.
41.642 - REDEFUNION
Message <Context> the union "<name>" is redefined. Description The union tag declared in this declaration is already declared as a union tag by another declaration. User Action Change the name of the union tag.
41.643 - REFBEFORETLS
Message <Context> the reference to the variable "<var>" lexically precedes its use in a #pragma omp threadprivate directive. This is not allowed. Description An OpenMP threadprivate directive must lexically precede all references to any varible in its variable list. The compiler had detected a reference to a variable which appears in a subsequent threadprivate directive. User Action Move the threadprivate directive before the reference.
41.644 - REGCONFLICT
Message Conflicting required uses of register(s): <text> Description The special linkage associated with a function has specified that one of the standard calling convention registers be used in a nonstandard way without also replacing its standard use with another register. An example would be a function that returns an int value using a special linkage that states R0 is not used, and does not specify another register to hold the return value. User Action Correct the #pragma linkage directive that specifies the special linkage.
41.645 - REGNOSHARE
Message <Context> noshare cannot be used with the register storage class. Modifier noshare is ignored. Description The storage class modifier noshare is meaningless for objects declared with register storage class. The compiler ignores the noshare. User Action Remove the noshare storage class modifier.
41.646 - RELOCALIGNMENT
Message An initialization requiring relocation is not correctly aligned at Psect <text> + <number> Description On some platforms, initializing an object to an address requires that the object be aligned on a natural boundary. User Action Either remove the static initializer or align the object being initialized.
41.647 - RESMISMATCH
Message The pointer size restored with pragma <pragma name> was saved using pragma <pragma name>. The pointer size restored will take effect. Description Compaq C supports two forms of the pointer-size directives. One begins with #pragma pointer_size, the other with #pragma required_pointer_size. A program has mixed the required_pointer_size and the pointer_size form of the pointer-size directives in a way that is not recommended. This might indicate a programming error. User Action If a pointer size has been saved by one form of the pointer-size directive, it should be restored by the same form of the directive.
41.648 - RESTRICTEXT
Message The __restrict type qualifier is a language extension. Description The use of the __restrict type qualifier might not be portable to other C compilers. User Action Be aware of this portability concern.
41.649 - RESTRICTEXT1
Message Placement of the __restrict qualifier within the array-bound specifier of a formal parameter declaration is a language extension. Description The use of the restrict type qualifier within the array bound specifier of a formal parameter is a language extension supported by Compaq C. Other C compilers might not successfully compile a program that uses this extension. User Action Be aware of this if you wish to port the program.
41.650 - RESTRICTEXT2
Message The restrict type qualifier is a new feature in C99. Other C compilers might not successfully compile a program that uses this feature. Description The use of the restrict type qualifier might not be portable to other C compilers. User Action Be aware of this portability concern.
41.651 - RESTRICTNOP
Message The restrict type qualifier can only be applied to a pointer type that points to an object or incomplete type. Qualifier is ignored. Description The restrict type qualifier has been used with an invalid type. Only pointers to object or incomplete types can have the restrict type qualifier. The compiler will ignore the type qualifier in all other cases. User Action Remove the type qualifier or change the type to one that accepts the qualifier.
41.652 - RETLOCALADDR
Message This return statement returns the address of a local variable. The address returned cannot be used by the caller in any meaningful way. Description The storage for all local variables is undefined after a function has returned. Returning the address of a local variable will cause undefined behavior when the return value is used in the calling program. User Action Either change the variable to have static storage duration, use malloc to allocate the storage (and free it after its use), or change the interface to have the caller pass in the address at which data is to be stored.
41.653 - RETVALTOOBIG
Message The size of return value of "<name>" exceeds the maximum size of an object allowed on this platform which is <size> bytes. Description A function's return value is too large for this platform. User Action Reduce the size of the return value.
41.654 - RIGHTSHIFTOVR
Message <Context> the right shift count "<number>" is greater than or equal to the size of the unpromoted operand "<expression>". Description The compiler has detected a right shift count that is greater than or equal to the size of the operand to be shifted (before application of the integral promotions). This might not be what you intended, as the result contains none of the original bits of the operand. For an unsigned operand, the result is always 0. For a signed operand, the result is either 0 or -1, depending on whether or not the operand had a negative value. The same result would be achieved by shifting a signed operand one fewer bits. User Action Correct the shift count (or replace the expression by 0 if appropriate).
41.655 - RTLMAPNOTFOUND
Message C RTL mapping information for RTL <name> not found. Could not access <image_name>. Description In most cases, the Compaq C compiler will automatically map names of C standard library functions to their corresponding names in the Compaq C RTL shareable image. In many cases, this is done simply by adding a "DECC$" prefix to the name. In order for this mapping to work, the compiler accesses an RTL mapping table. This message is issued if the compiler was unable to open the mapping table. In these cases, no name mapping will be performed. The most common cause of this message is specifying bad name in the /PREFIX=RTL="name" compiler qualifier. User Action Specify a valid RTL on the /PREFIX=RTL qualifier. If no qualifier was used, it might be necessary to reinstall the compiler and/or RTL. For more information consult the Compaq C Run-time Library Manual for OpenVMS Systems.
41.656 - RTLMISMATCH
Message Compaq C RTL prefix table version mismatch: RTL table is V<major>.<minor>, compiler needs V<major>.<minor>. Description In most cases, the Compaq C compiler will automatically map names of C standard library functions to their corresponding names in the Compaq C RTL shareable image. In many cases, this is done simpl by adding a "DECC$" prefix to the name. In order for this mapping to work, the compiler accesses an RTL mapping table. The compiler also requires that the version of the RTL mapping table be compatible with the version of the compiler. In cases where the versions are incompatible, this message is generated. In these cases, no name mapping will be performed. The most common cause of this message is specifying an old RTL name in the /PREFIX=RTL="name" compiler qualifier. User Action Specify a new RTL on the /PREFIX=RTL qualifier. If no qualifier was used, it might be necessary to reinstall the compiler and/or RTL. For more information, consult the Compaq C Run-time Library Manual for OpenVMS Systems.
41.657 - SAMEASTYPEDEF
Message <Context> the extern has the same name as a file-scope typedef. This is a language extension. Description The program has declared an extern inside a function whose name matches a file-scope typedef. This is not allowed by the C standard, but is accepted for compatibility with other C compilers. User Action Change the name of the variable or the typedef.
41.658 - SCACALL
Message This function contains too many parameters for SCA to handle. Function parameter info will be truncated. Description The parameter information for this function contains more data than SCA can process. The compiler will truncate the parameter information. Be aware that the parameter information will be incomplete. User Action Simplify the parameter information.
41.659 - SCAID2LONG
Message The identifier exceeds the SCA limit of <number> characters. In the SCA file the name will be truncated to "<truncated spelling>". Description The length of an identifier supported by SCA is less than the length of an identifier supported by the Compaq C compiler. Because of this, the compiler will truncate an identifier name to fit the SCA limits. User Action Either reduce the identifier name, or be aware of this when using SCA.
41.660 - SCALEFACTOR
Message The CDD description for <name> specifies a scale factor of <number>. The scale factor is being ignored. Description Compaq C does not support scaled arithmetic. User Action Verify that all computations involving this item are correctly scaled.
41.661 - SCAOVFLO
Message Compiler Internal Error: SCA event buffer overflowed. Please submit an SPR. Description When building SCA information, the compiler overflowed its internal buffer. This should not happen. User Action Please submit a problem report detailing the failure.
41.662 - SEQUENCEEXT
Message <Context> allowing a comma operator is a language extension. Description In this context the C standard does not allow the comma (sequence) operator. Compaq C allows this syntax for compatibility with some other C compilers. Be aware that this syntax may not be accepted by other C compilers. User Action If the intent is to use an expression that is not necessarily a constant expression, then enclose it in parentheses. But if the intent of the declaration is to use a constant expression, then the comma operator cannot be used.
41.663 - SESEMULTIEXITS
Message parallel directive scope <text> has multiple exits Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.664 - SESEMULTIPREDS
Message parallel directive scope <text> has multiple entry paths Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.665 - SESEVFLOW
Message parallel directive scope <text> is crossed by a VBRANCH Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.666 - SHARECONST
Message In this declaration, noshare has been ignored due to the presence of const or readonly. Description A variable declared with the readonly storage class modifier, or the const type modifier cannot also have the noshare storage class modifier. The compiler will ignore the noshare storage class modifier. User Action Remove either the noshare storage class modifier or the const or readonly modifiers.
41.667 - SHIFTCOUNT
Message <Context> the shift count "<number>" is negative or is greater than or equal to the promoted size of the operand "<expression>". Description The compiler has detected a shift count that is negative or is greater than or equal to the promoted size of the operand to be shifted. This behavior is undefined. User Action Correct the shift count.
41.668 - SHORTCIRCUIT
Message <Context> potential side effects from the evaluation of "<operand>" will not take place. This is because the first operand of a logical operator is a constant whose value requires that this expression must not be evaluated. Description The C language requires that if the first operand of a logical || or && operator determines the result of the expression, the second operand must not be evaluated. This behavior is different from other operators. The compiler has noticed that the second operand will generate code that may produce side effects that the programmer expects to take place. This message is to inform the user that the code generated for the second operand will not be executed. User Action Replace the logical expression with its first operand.
41.669 - SIGNEDKNOWN
Message <Context> Compaq C recognizes the standard keyword "signed". This differs from the VAX C behavior. Description VAX C does not recognize the "signed" keyword. Compaq C will allow this, even in vaxc mode. User Action Be aware of this difference if you plan to compile the source with VAX C.
41.670 - SIGNEDMEMBER
Message <Context> Compaq C recognizes the standard C keyword "signed" in member declarations. The VAX C compiler does not and would treat the member as unsigned. Description VAX C does not recognize the "signed" keyword in a member declaration. VAX C will treat the member as an unsigned type. Compaq C will recognize the keyword and declare the member as a signed type. User Action Be aware of this difference if you plan to compile the source with VAX C.
41.671 - SIMPLEMESSAGE
Message <user text> Description The compiler has encountered a #pragma message (<quoted string>)directive. It will output the message in the quoted string. User Action Remove the pragma message.
41.672 - SIZEBIT
Message <Context> "<expression>" is a bitfield, and so has no size. Description A bitfield expression cannot be used as the argument to the sizeof operator or the __builtin_alignof builtin. User Action Pass an expression with a valid type to the operator or builtin.
41.673 - SIZEINCOMP
Message <Context> "<expression>" is of an incomplete type, and so has no size. Description An expression that has incomplete type has no size and therefore cannot be used as the argument to the sizeof operator. User Action Pass an expression with a valid type to the sizeof operator.
41.674 - SIZEINCOMPTYP
Message <Context> "<type>" is an incomplete type, and so has no size. Description A incomplete type has no size and therefore cannot be used as the argument to the sizeof operator. User Action Pass a valid type to the sizeof operator.
41.675 - SIZFUNVOIDTYP
Message <Context> "<type>" has function or void type and may not appear in this context. The compiler will treat the type as if it were char. Description A function or void type cannot be used as the argument of the sizeof operator or the __builtin_alignof builtin. For compatibility with some other compilers, an output file is still created. The result produced will be the same as if a char type was passed. This may or may not be compatible with other compilers that accept this syntax. User Action Pass a valid type to the operator or builtin.
41.676 - STACKPOP
Message This "restore" has underflowed the pragma <stack name> stack. No corresponding "save" was found. Description One of the pointer-size stacks, managed by the #pragma pointer_size, #pragma require_pointer_size, #pragma required_vptr_size, and #pragma environment directives, contains more restores than saves. This could signify a coding or logic error in the program. User Action Make sure each restore has a corresponding save.
41.677 - STATICIFLOAT
Message <Context> conversion of a link-time address constant to a floating type is required. This is not allowed. Description The initialization of an object with static extent requires a value that is a link-time constant expresion. Link-time constant expressions cannot involve values of floating types (other than floating constants that are the immediate operands of casts). User Action Remove the floating point types from the initialization.
41.678 - STATICVLA
Message <Context> the static object "<name>" cannot be a variable length array. Description Only ordinary identifiers with block scope and without storage class extern or static, or ordinary identifiers with function prototype scope can be declared as variable-length arrays. User Action Correct the declaration.
41.679 - STATINITWARN
Message <Context> the linker will be unable to perform this static initialization if the initializer is defined in a sharable image. Description A static initialization will require that a link-time constant be truncated. If the constant is resolved in a sharable image, the linker will issue a diagnostic and be unable to perform the initialization. This message is output on OpenVMS systems only. User Action Rewrite the static initialization so that the link-time constant will not be truncated.
41.680 - STDARG
Message <Context> stdarg.h macros might be required if the address of the parameter <name> is used to index through a parameter list. Description Some older C programs will traverse a function's parameter list by taking the address of one of the parameters and then adjusting it to get to subsequent parameters. In most cases, this technique will not produce the desired results on Alpha. This message is specific to UNIX, and is only output if -varargs option is specified. User Action If the address is used to walk the parameter list, recode the function to use the standard stdarg.h macros.
41.681 - STKALLEXC
Message Allocations to stack exceeded maximum stack size Description A routine uses more stack space than is available on this platform. This is most often caused by declaring too many large automatic variables. User Action Reduce the size required by the automatic variables.
41.682 - STOALNERR
Message Psect <text> alignment is insufficient for allocation of <text> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.683 - STONOTFIRST
Message The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature. Description The standard states that this style of declaration is obsolescent. User Action Place the storage-class specifier first in the declaration.
41.684 - STORCLSDCL
Message <Context> a storage class without a declarator is meaningless. Description This message is generated when the compiler encounters certain declarations that contain a storage class but no declarator. For example: extern struct S { int a;}; User Action Either remove the storage class or add a declarator to the declaration.
41.685 - STOREQEXC
Message Allocations to <text> section exceeded growth bounds Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.686 - STORISSTAT
Message This redeclaration of the static initialized variable "<name>" will have static storage class that differs from the VAX C behavior. The previous declaration is at <location>. Description In VAX C mode, if a variable is first declared static and then declared extern, the variable will be given extern storage class. This matches the VAX C behavior. If, however, the static variable is initialized, the storage class will remain static. User Action Be aware of this difference.
41.687 - STORMODDCL
Message <Context> a storage class modifier without a declarator is meaningless. Description This message is generated when the compiler encounters certain declarations that contain a storage class modifier but no declarator. For example: readonly struct S { int a;}; User Action Either remove the storage class modifier or add a declarator to the declaration.
41.688 - STRCTPADDING
Message An additional <number> bytes of padding have been implicitly inserted prior to this member for proper alignment of this member. Description The compiler has added pad bytes before a member so that it will be accessed efficiently. This might not have been what you intended. User Action Consider rearranging the order of member declarations.
41.689 - STRINGCONST
Message Ill-formed string constant. Description An invalid string constant was encountered. User Action Correct the string constant.
41.690 - STRUCTBRACE
Message <Context> a required set of braces is missing. Description The initializer for this struct was not enclosed in braces. While some compilers allow this, standard C requires braces around the initializer. User Action Enclose the initializer in braces.
41.691 - STRUCTLIMITSUP
Message <Context> Compaq C provides only limited support for struct/union types larger than <n> bytes. Description This struct/union type is larger than can be represented by size_t. While Compaq C will allow a type declared to be this size, uses of the type are not fully supported and may cause unpredictable behavior. User Action Reduce the size of the type.
41.692 - STRUCTOVERFLOW
Message Integer overflow occurred when computing the size of a struct or union type. Description An struct or union type is larger than allowed on this platform. Note that as the compiler computes the size of the type in bits, the limit on the size of struct/union types is eight times smaller than the size of other types. User Action Reduce the size of the struct/union type.
41.693 - SUBINVALIDCHR
Message Parameter substitution produced an invalid character constant. Description In certain modes, the compiler will replace identifiers found within a character constant if they match a macro argument name. This form of "old-style stringization" is provided for compatibility with older C compilers. This message is output if this replacement forms an invalid character constant. User Action Modify the macro argument so that a valid character constant is formed.
41.694 - SUBINVALIDSTR
Message Parameter substitution produced an invalid string literal. Description In certain modes, the compiler will replace identifiers found within a string literal if they match a macro argument name. This form of "old-style stringization" is provided for compatibility with older C compilers. This message is output if this replacement forms an invalid string literal. User Action Modify the macro argument so that a valid string is formed. Compaq also recommends that the macro body be rewritten to use the standard C stringize operator (#).
41.695 - SUBSCRBOUNDS
Message <Context> an array is being accessed outside the bounds specified for the array type. Description The compiler has detected an array access that is outside the bounds of the array. The array access might cause unpredictable behavior. Note that in C, an array is declared using the number of elements, but the first element has subscript 0. It is a common coding error to attempt to access the last element of an array of "n" elements using a subscript of "n" instead of "n - 1". However, there are two common practices that intentionally employ out-of-bounds subscripts to useful/correct effects that are not reported by this message, but have separate optional messages. First, taking the address of an array element that is exactly one beyond the last element of an array is completely valid in standard C as long as the address is not used to access memory. The optional subscrbounds2 message can be enabled to report taking the address of the array element exactly one beyond the last element. Second, it is a somewhat common practice to declare the last member of a struct as an array with one element, and then allocate such structs at runtime with different sizes, recording the actual size in an earlier member of the struct. The optional subscrbounds1 message can be enabled to report subscripts greater than zero applied to arrays declared with only one element. User Action Specify an array subscript that is within the bounds of the array type.
41.696 - SUBSCRBOUNDS1
Message <Context> an array type declared with one element is being accessed beyond the end of the array. Description An array declared with one element is being accessed beyond the end of the array. The array access can cause unpredictable behavior. Note that in C, an array is declared using the number of elements, but the first element has subscript 0. It is a common coding error to attempt to access the last element of an array of "n" elements using a subscript of "n" instead of "n - 1". User Action Specify an array subscript that is within the bounds of the array type.
41.697 - SUBSCRBOUNDS2
Message <Context> accessing the address of an array element that is exactly one beyond the end of the array might not be what you intended. Description Accessing the address of an array element that is exactly one beyond the end of the array might be a coding error (e.g. if the address is then used to access memory), or it might be fully correct (e.g. to compute a pointer value to be used as the upper bound on a loop). User Action Specify an array addressthat is within the bounds of the array type.
41.698 - SWITCHLONG
Message The signed or unsigned long expression "<expression>" is used in a switch statement. Description A switch value has an integer type of signed or unsigned long int. While Compaq C will allow this, some compilers will truncate the value to an int. User Action Be aware of this if porting the code to another platform.
41.699 - SYSREGUSED
Message System register specified as external register. Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.700 - SYSTEM
Message <text> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.701 - TAGDIFFER
Message <Context> the tag "<name>" differs from the tag "<name>" used in an earlier declaration of this function. Description This function declaration contains a parameter that is a pointer to a struct or union type whose tag differs from the tag of the struct or union type referenced by a pointer type in an earlier declaration of this function. In most modes of the compiler, this will cause the function declarations to be incompatible. User Action Multiple declarations of a function should use exactly the same parameter types.
41.702 - TAGORBRACE
Message Missing tag or "{". Description The enum, struct, and union keywords must be followed by either an open brace or a tag. User Action Correct the program syntax.
41.703 - TENTREDEF
Message This <definition or tentative definition> of "<name>" is redefining the <definition or tentative definition> on <location>. This is not allowed in C++. <compiler__declare_tent_redef1>. Description C will allow a tentative definition to be redefined later in the compilation unit. C++ does not have the concept of a tentative definition. Therefore this redefinition is invalid in C++. User Action Either remove the previous tentative definition, or modify it to match the later redefinition.
41.704 - TEXTARRAY
Message The CDD description for <name> specifies that it is text 1; It has been translated into an array of char. Description When the CDD type "TEXT" is of length one, Compaq C will normally convert this to type "char" in order to be compatible with VAX C. If however, the nullterminate or text1toarray keywords are specified in a Compaq C dictionary directive, the CDD type TEXT will be converted to type "array of char". User Action No action is necessary as long as the type "array of char" is the desired datatype.
41.705 - TEXTARRAYN
Message The CDD description for <name> specified that it is text 1; It has been translated into an array of char because null_terminate was used. Description The CDD type "TEXT" is of length 1 and has been converted to the C type "array of char" of size 2 because the null_terminate keyword was specified on the dictionary directive. User Action No action is necessary as long as the type "array of char" of size two is the desired C datatype.
41.706 - TEXTCHAR
Message The CDD description for <name> specified that it is text 1; It has been translated into a type char. Description When the CDD type "TEXT" is of length one, Compaq C will normally convert this to type "char" in order to be compatible with VAX C. However, when the length of the CDD type "TEXT" is greater than one, the C type "array of char" is generated. This means that CDD type "TEXT" will result in different C datatypes depending upon the length of the TEXT stored in the dictionary. User Action No action is necessary as long as the type "char" is the desired datatype.
41.707 - TEXTMODULE
Message The text library module form of #include is an extension. Description On OpenVMS systems, an #include directive whose file specifier is not enclosed in either quotation marks or angle brackets denotes an include from a text library. This is an extension of Compaq C/C++. This directive will not work as expected on non-VMS systems. User Action Be aware of this if you wish to port the program.
41.708 - THREADFUNC
Message <Context> the __declspec(thread) storage class modifier cannot be used with a function type. Modifier is ignored. Description Only objects can be declared with thread-local storage. The storage class modifier is ignored when applied to an identifier with function type. User Action Either remove the storage class modifier or change the type to one that is valid for __declspec(thread).
41.709 - THREADNYI
Message <Context> the __declspec(thread) storage class modifier is not implemented on this platform. It will be ignored except to verify correct compile-time usage. Description Thread-local storage is only supported on UNIX platforms. The compiler will ignore the storage class modifier except to verify that it is correctly used. User Action Remove the __declspec(thread) storage class modifier or compile the program on a platform that supports the modifier.
41.710 - THREADSTO1
Message <Context> the __declspec(thread) storage class modifier requires a storage class of extern, static, or none. Modifier is ignored. Description Declaring a file-scope object with thread-local storage requires that the object have a storage class of extern, static or none. In other cases, the compiler will ignore the __declspec(thread) storage class modifier. User Action Either remove the storage class modifier or change the storage class to one that is valid for __declspec(thread).
41.711 - THREADSTO2
Message <Context> the __declspec(thread) storage class modifier requires a storage class of extern, or static. Modifier is ignored. Description Declaring a local object with thread-local storage requires that the object have a storage class of extern, or static. In other cases, the compiler will ignore the __declspec(thread) storage class modifier. User Action Either remove the storage class modifier or change the storage class to one that is valid for __declspec(thread).
41.712 - TLSANDSTATIC
Message <Context> the storage class modifier __declspec(thread) cannot be used with the -static option. The storage class modifier is ignored. Description Thread-local storage cannot be declared in compilations that are performed with the -static option. The compiler will ignore the __declspec(thread) storage class modifier. User Action Either remove the __declspec(thread) storage class modifier or do not compile with the -static option.
41.713 - TOOFEWACTUALS
Message Too few actual parameters in macro call. Description A macro invocation supplied fewer actual arguments than the macro expects. The macro arguments not specified in the call will be given a null value. User Action Supply all arguments in the macro invocation.
41.714 - TOOFEWARGS
Message <Context> "<function expression>" expects <correct number> arguments, but <actual number> are supplied. Description A function has been invoked with fewer arguments than it expects. In some modes this is a warning message, and the compiler will compile the program. In this case, the function being called might not produce the expected results. User Action Make sure the number of arguments passed to a function match those specified in the function declaration.
41.715 - TOOFEWARGSO
Message <Context> "<function expression>", which was declared with an old-style function definition, expects <correct number> arguments, but <actual number> are supplied. Description A function that was declared with an old-style function definition has been invoked with fewer arguments than it expects. While this is valid C, it might not have been what you intended. User Action Make sure the number of arguments passed to a function match those specified in the function declaration. If the function is to be called with a variable number of arguments, it should use the facilities of <varargs.h> for old-style definitions. Compaq generally recommends that old-style function definitions be replaced by prototype-format definitions, in which case variable argument lists are specified using the ... notation and the definition uses the facilities of <stdarg.h>.
41.716 - TOOLONG
Message <Context> , "<expression>" is too long by <count> character(s). Description A string initializer for a char array contains more characters than the array can hold. This is not valid. User Action Reduce the number of characters to be less than or equal to the number of elements in the char array.
41.717 - TOOMANY
Message <Context> , there are <actual number> elements, which is <extra number> too many. The extra initializers will be ignored. Description An initializer list contains more initializers than there are objects to be initialized. This is not valid. User Action Reduce the number of initializers to be less than or equal to the number of objects being initialized.
41.718 - TOOMANYACTLS
Message Too many actual parameters in macro call. Description A macro invocation supplied more actual arguments than the macro expects. The additional arguments will be ignored. User Action Remove the extra arguments from the macro invocation.
41.719 - TOOMANYARGS
Message <Context> "<function expression>" expects <correct number> arguments, but <actual number> are supplied. Description A function has been invoked with more arguments than it expects. In some modes this is a warning message, and the compiler will compile the program. User Action Make sure the number of arguments passed to a function match those specified in the function declaration.
41.720 - TOOMANYARGSO
Message <Context> "<function expression>", which was declared with an old-style function definition, expects <correct number> arguments, but <actual number> are supplied. Description A function that was declared with an old-style function definition has been invoked with more arguments than it expects. While this is valid C, it might not have been what you intended. User Action Make sure the number of arguments passed to a function match those specified in the function declaration. If the function is to be called with a variable number of arguments, it should use the facilities of <varargs.h> for old-style definitions. Compaq generally recommends that old-style function definitions be replaced by prototype-format definitions, in which case variable argument lists are specified using the ... notation and the definition uses the facilities of <stdarg.h>.
41.721 - TOOMANYERR
Message More than <number> errors were encountered in the course of compilation. Description After emitting a certain number of errors, the compiler will stop the compilation and issue this message. The number of errors output before the compilation stops can be changed using the /ERROR_LIMIT qualifier on OpenVMS systems, or the -error_limit option on UNIX systems. User Action Either reduce the number of errors generated by the program or give a larger value for the error limit.
41.722 - TOOMANYGATES
Message only 64 gates maybe be used within a parallel region Description For each parallel region there is a limit of 64 different gates that can be specified in a #pragma enter gate/#pragma exit gate pair. User Action Reduce the number of gates
41.723 - TOOMANYTOKENS
Message Too many tokens in macro expansion. Description An argument to the #line preprocessing directive contained a macro whose expansion generated more tokens than the #line directive expects. User Action Either modify the macro definition or change the arguments to the #line directive.
41.724 - TOOMANYTXTLIB
Message Too many text libraries. Library <library name> and subsequent will not be searched. Description The compiler has tried to open more text libraries than it can support in its internal data structures. The specified library, and all subsequent libraries will not be opened. User Action Reduce the number of text libraries the compilation requires.
41.725 - TOOMNYREL
Message Object file section <text> has <number> relocations; maximum allowed is <number> Description This message is emitted by the code generator used by all Compaq compilers for the Alpha architecture. It should never be output when compiling a C program. User Action Please submit a problem report if you encounter this message when compiling a C program.
41.726 - TRAILCOMMA
Message Trailing comma found in enumerator list. Description Accepting an enumerator list that contains a trailing comma is an extension of Compaq C provided for compatibility with other C compilers. An enumerator list with a trailing comma is not valid in C89, nor in C++. The C99 standard does permit this syntax. User Action Remove the trailing comma.
41.727 - TRUNCFLTASN
Message <Context> "<expression>" has more precision than "<target type>". Assignment might result in loss of precision and/or range. Description The destination of a floating-point assignment has less range and/or precision than the expression being assigned to the destination. Because of this, the assignment might cause a loss of range and/or precision. User Action Verify that no unexpected data can be lost by the assignment. If not, cast the expression to the type of the destination.
41.728 - TRUNCFLTINT
Message <Context> "<expression>" is a floating-point type being assigned to an integer type. The assignment might result in data loss. Description A floating-point expression is being assigned to an integer type. This assignment might cause a loss of range and/or precision. User Action Verify that no unexpected data can be lost by the assignment. If not, cast the expression to the type of the destination.
41.729 - TRUNCINTASN
Message <Context> "<expression>" has a larger data size than "<target type>". Assignment might result in data loss. Description The destination of an integer or pointer assignment is smaller than the expression being assigned to the destination. Because of this, the assignment might cause data to be lost. User Action Verify that no unexpected data can be lost by the assignment.
41.730 - TRUNCINTCAST
Message <Context> "<expression>" has a larger data size than "<target type>". Cast might result in data loss. Description An integer or pointer expression is being cast to a size that is smaller than the expression. Because of this, the cast might cause data to be lost. User Action Verify that no unexpected data can be lost by the cast.
41.731 - TRUNCLONGCAST
Message <Context> "<expression>", a 64-bit integer, is being cast to a 32-bit integer. The cast might result in data loss. Description On many platforms long integers are the same size as integers. On this platform long integers are 64-bits. This cast could indicate a potential porting problem. User Action Verify that no unexpected data can be lost by the cast.
41.732 - TRUNCLONGINT
Message <Context> "<expression>", a 64-bit integer, is being assigned to a 32-bit integer. Assignment might result in data loss. Description On many platforms long integers are the same size as integers. On this platform long integers are 64-bits. This assignment could indicate a potential porting problem. User Action Verify that no unexpected data can be lost by the assignment.
41.733 - TYPEALIGN
Message <Context> _align cannot be used with the typedef storage class. Modifier _align is ignored. Description The storage class modifier _align is meaningless for typedefs. The compiler ignores the _align. User Action Remove the _align storage class modifier.
41.734 - TYPECONFLICT
Message <Context> "<typespec1>" cannot be combined with "<typespec2>". Description Two type keywords used in the same type specifier cannot be combined. In some modes, the compiler will use the most recent keyword as the type specifier. User Action Correct the type specifier.
41.735 - TYPEDEFFUNC
Message In this function definition, "<name>" acquires its type from a typedef. Description A function definition acquires its type from a typedef. This is not allowed. User Action Correct the function definition.
41.736 - TYPEDEFINIT
Message The declaration of the typedef "<name>" contains an initializer. The initializer is ignored. Description A typedef declaration must not contain an initializer. User Action Remove the initializer from the declaration.
41.737 - TYPEDEFNA
Message Accepting an old-style parameter name that matches a typedef is a language extension. Description The Compaq C compiler will allow old-style parameters to have the same name as a typedef. Many other compilers will not allow this. User Action Recode the function definition to use the standard C prototype syntax.
41.738 - TYPEDEFNOTDEF
Message In this declaration, "<name>" appears to be used as if it named a type, but there is no declared type of that name visible. Description The compiler has encountered what appears to be a typedef declaration that provides a new name for an existing type, but the identifier used to specify the existing type is not the name of a type that is visible. User Action Declare the identifier for the first type, or correct its spelling.
41.739 - TYPEEXPR
Message <Context> "<name>" is declared as <a label, tag, or typedef>, and so cannot occur as an expression. Description An identifier declared as a typedef has been used in an expression when an object or function was required. User Action Correct the expression.
41.740 - TYPEOFEXT
Message The use of __typeof__ is a language extension. Description Support for __typeof__ is a language extension provided for compatibilty with some other C compilers. Although some other C compilers will accept this syntax, many compilers will reject it. User Action Be aware of this difference if you plan to port this source to another compiler.
41.741 - TYPESIGNDIFF
Message <Context> a typedef has been declared to have<signed>int type. It had been declared to have<signed>int type <where>. This change will affect any subsequent bitfield declarations that are declared with this type. Description As this program has been compiled with unsigned bitfields, there is a difference between int and signed int types. Any bitfield declared with this typedef type after this redeclaration will use the new type, while bitfields declared with this type before the redeclaration will differ in whether or not the high-order bit is treated as a sign bit. This may not be what you expected. User Action If the intent is to have different types, use a different typedef name. If the intent is to have the same types, correct or remove the second typedef, or compile with the default signed-bitfield option.
41.742 - TYPQUALNOT
Message A type qualifier is not allowed in this context. Description In Microsoft mode, the compiler used to accept a type qualifier after a comma used to separate declarators. This was refered to as a local type qualifier. This message is output when a local type qualifier is applied to a declarator that can not be qualified. User Action Remove the local type qualifier because this is no longer accepted.
41.743 - TYPQUALNOT2
Message Use of the keyword "static" or a type qualifier within the outermost array-bounds specifier of a formal parameter declaration is a new feature in the C99 standard. Description The C99 construct may not be available in other compilers you use to build your application, in which case they will likely report it as a syntax error. User Action You may want to conditionalize your code with the preprocessor so that you can take advantage of the feature on platforms that support it, without getting syntax errors from older compilers or language modes that do not support it.
41.744 - TYPQUALNOT3
Message Use of the keyword "static" or a type qualifier in an array-bounds specifier is invalid in this compilation mode. Keyword/qualifier ignored. Description Use of the keyword "static" or a type qualifier within the outermost array bound specifier of a formal parameter is a new feature in the C99 standard and is not supported in this language mode. User Action Either compile in a mode that supports C99 features, or remove the construct from your code.
41.745 - TYPQUALNOT4
Message Use of this type qualifier in an array-bounds specifier is invalid. Qualifier ignored. Description Use of this type qualifier is not a permitted in the array bound specifier of a formal parameter. User Action Remove the keyword.
41.746 - UABORT
Message Compilation terminated by user. Description This message is often output when the compilation was aborted by the user by hitting Control C. User Action Do not abort the compilation.
41.747 - UNALIGNEDFUNC
Message Ignoring __unaligned type qualifier in declaration of <name>. Description The __unaligned type qualifier has no meaning for function types. It is being ignored. User Action Remove the type qualifier.
41.748 - UNALIGNEXT
Message The __unaligned type qualifier is a language extension. Description The use of the __unaligned type qualifier might not be portable to other C compilers. User Action Be aware of this portability concern.
41.749 - UNAVAILPRAGMA
Message The pragma "<pragma name>" is not available on this platform. Description The compiler has encountered a pragma that is not currently supported on this platform. The compiler will ignore the pragma. User Action Compile the program on a platform that does support the pragma. Otherwise, understand that this pragma will have no effect.
41.750 - UNAVOLACC
Message volatile access appears unaligned, but must be aligned at run-time to ensure atomicity and byte granularity Description The compiler has detected an unaligned access to a volatile variable. Because the access is unaligned, there is no guarantee of atomicity and byte granularity. Therefore the access may not work as you expect. User Action Make sure volatile objects are aligned on a natural boundary.
41.751 - UNCALLED
Message routine <text> can never be called Description The compiler has detected a static function that is never referenced. User Action Remove the unused function.
41.752 - UNDECLARED
Message <Context> "<name>" is not declared. Description An identifier used in an expression has not been declared. The only time an identifier can be used and not previously declared is when the identifier specifies the function name in a function call. User Action Either declare the identifier or remove its use.
41.753 - UNDECLFUN
Message There is no function declaration for the identifier "<name>" at the point of this #pragma <pragma type> <attributes>. Description An identifier specified in a #pragma assert func_attrs directive must refer to a function declaration at the point of the pragma. User Action Either remove the identifer from the pragma, correct its spelling, or reorder the source to ensure that a declaration of the identifier as a function is visible at the point of the pragma. Identifier must be a function declaration; no other kind of declaration (i.e. typedef, var, etc.) is allowed for func_attrs.
41.754 - UNDECLVAR
Message There is no global declaration visible for the variable "<name>" at the point of this #pragma assert global_status_variable. Description An identifier specified in a #pragma assert directive must refer to a global variable declaration visible at the point of the pragma. The identifier will be ignored. User Action Either remove the identifer from the pragma, correct its spelling, or reorder the source to ensure that a declaration of the identifier as a global_variable is visible at the point of the pragma.
41.755 - UNDEFENUM
Message <Context> the enum "<name>" is not defined. Description The enum tag used to declare an enum variable is not defined at this point in the compilation. User Action Define the enum tag before using it.
41.756 - UNDEFESCAP
Message An undefined escape sequence was encountered; the backslash is being ignored. Description The character or characters following a backslash do not form a valid escape sequence. The compiler will ignore the backslash. User Action Correct the escape sequence.
41.757 - UNDEFVARFETCH
Message <Context> the expression "<expr>" modifies "<var>", and fetches its value in a computation that is not used to produce the modified value without an intervening sequence point. This behavior is undefined. Description The compiler has detected a case where the same variable has been modified and fetched in a computation that does not later modify that same variable. Because the order of the variable fetch and store is not defined, this expression might produce different results on different platforms. User Action Rewrite the expression so that if a variable is stored to, it is fetched only to determine the value to be stored.
41.758 - UNDEFVARMOD
Message <Context> the expression "<expr>" modifies the variable "<var>" more than once without an intervening sequence point. This behavior is undefined. Description The compiler has detected a case where the same variable has been modified more than once in an expression without a sequence point between the modifications. Because what modification will occur last is not defined, this expression might produce different results on different platforms. User Action Rewrite the expression so that each variable is modified only once.
41.759 - UNDERFLOW
Message <Context> underflow occurs in evaluating the expression "<expression>". Description A floating-point underflow occurred while evaluating a constant expression. The value of the expression is undefined. User Action Correct the floating-point constant expression.
41.760 - UNINIT1
Message The scalar variable "<var>"<declared in> is fetched but not initialized<inlineinfo>. And there may be other such fetches of this variable that have not been reported in this compilation. Description A variable's value has been used without being set. This might not have been what you intended. The algorithms that detect this situation only report it once for a given variable, and not necessarily at the first use of the uninitialized value. User Action Provide the variable with a value before the variable is used. If you only provide a value for the use reported here, you may find that when you recompile your program another uninitialized use is detected. It is best to initialize variables as close as possible to the point of declaration.
41.761 - UNINIT2
Message Part or all of the non-scalar variable "<var>"<declared in> is fetched but not initialized<inlineinfo>. And there may be other such fetches of this variable that have not been reported in this compilation. Description A non-scalar variable has had its value used and some or all of the variable has not been given a value. This might not have been what you intended. The algorithms that detect this situation only report it once for a given variable, and not necessarily at the first use of the uninitialized value. User Action Provide the variable with a value before the variable is used. If you only provide a value for the use reported here, you may find that when you recompile your program another uninitialized use is detected. It is best to initialize variables as close as possible to the point of declaration.
41.762 - UNINIT3
Message Variable "<var>"<declared in> is fetched but not initialized<inlineinfo>. And there may be other such fetches of this field that have not been reported in this compilation. Description The specified member of a struct variable has been used without being set. This might not have been what you intended. The algorithms that detect this situation only report it once for a given field, and not necessarily at the first use of the uninitialized value. User Action Provide the struct member with a value before the variable is used. If you only provide a value for the use reported here, you may find that when you recompile your program another uninitialized use is detected. It is best to initialize variables as close as possible to the point of declaration.
41.763 - UNINIT4
Message Byte offsets <start> to <end> of "<var>"<declared in> are fetched but not initialized<inlineinfo>. And there may be other such fetches of this field that have not been reported in this compilation. Description The specified byte offsets of a variable have been used without being set. This might not have been what you intended. The algorithms that detect this situation only report it once for a given field, and not necessarily at the first use of the uninitialized value. User Action Provide the full variable with values before the variable is used. If you only provide a value for the use reported here, you may find that when you recompile your program another uninitialized use is detected. It is best to initialize variables as close as possible to the point of declaration.
41.764 - UNINIT5
Message <fragment uninit5a><inlineinfo>. Also the variable itself is not initialized. And there may be other fetches of this variable that have not been reported in this compilation. Description The specified storage location has been used without being set. This might not have been what you intended. In addition, as this fetch is outside the storage allocated to the variable, the behavior is undefined. User Action First verify that the fetch is correct(code that uses the address of a declared object to access memory outside the address range allocated to that object is not likely to be reliable). Then initialize the storage being fetched and, if necessary, the variable noted in the message. If you only provide a value for the use reported here, you may find that when you recompile your program another uninitialized use is detected, since the algorithms that detect this situation only report it once for a given variable, and not necessarily at the first use of the uninitialized value. It is best to initialize variables as close as possible to the point of declaration.
41.765 - UNIONBRACE
Message <Context> a required set of braces is missing. Description The initializer for this union was not enclosed in braces. While some compilers allow this, standard C requires braces around the initializer. User Action Enclose the initializer in braces.
41.766 - UNKEXTMOD
Message Unknown extern model. Pragma is ignored. Description The compiler was unable to parse a #pragma extern_model directive. The extern_model must be an identifier that specifies one of the valid extern models. The directive will be ignored. User Action Correct the directive.
41.767 - UNKINTRIN
Message The function "<routine name>" is not a known intrinsic function and cannot be used with #pragma intrinsic. Pragma not applied to this function. Description A function identifier specified in a #pragma intrinsic directive is not a valid intrinsic function on this platform. The pragma will not be applied to this identifier, leaving it to be treated as an ordinary function. User Action Either correct the function name to specify an intrinsic supported for this platform, or remove it from the pragma.
41.768 - UNKMSGCMD
Message Bad or missing command in pragma message. Pragma is ignored. Description The #pragma message directive must be followed by an identifier that specifies message-related action for the compiler to perform. Either something other than an identifier was found, or the identifier did not specify one of the valid actions. The compiler will ignore the pragma. User Action Specify a valid action for #pragma message.
41.769 - UNKMSGID
Message Unknown message id or group "<id>" is ignored. Description A message identifier in a #pragma message directive did not specify a valid message id or message group. The identifier will be ignored. User Action Update the identifier so that it specifies a valid message id or message group.
41.770 - UNKNOWNLINK
Message The specified linkage is undefined. Pragma is ignored. Description The linkage specified in a #pragma use_linkage directive has not been defined by an earlier #pragma linkage directive. The compiler will ignore the entire pragma. User Action Either define the linkage first or change the linkage name.
41.771 - UNKNOWNMACRO
Message "<name>" is not currently defined as a macro. It has been replaced by the constant zero. Description An identifier found in an #if or #elif is not defined. This might not have been what you intended. The compiler will replace the identifier with the constant zero. User Action Verify the use of the identifier.
41.772 - UNKNOWNPRAGMA
Message The pragma "<pragma text>" is unrecognized. Description A pragma that has no meaning to Compaq C/C++ was encountered. The pragma will be ignored. User Action Make sure that you did not misspell the pragma. Also, make certain you are running the correct version of Compaq C/C++. If the spelling and compiler version are correct, understand that this pragma will have no effect.
41.773 - UNKNOWNPRGMA
Message Unrecognized #pragma directive. Description This #pragma preprocessing directive is not recognized by Compaq C. The directive will be ignored. User Action Make sure that this is the intended behavior.
41.774 - UNKPSECTATTR
Message Unknown psect attribute for extern model. Attribute is ignored. Description A psect attribute specified in a #pragma extern_model is invalid. In general, the psect attributes accepted by Compaq C/C++ match those accepted by the assembler. The psect attribute will be ignored. User Action Correct the psect attribute.
41.775 - UNMATCHENDIF
Message Out of place #endif directive ignored. Description An #endif preprocessing directive was encountered without a previous #if directive. The directive will be ignored. User Action Remove the directive.
41.776 - UNNAMEDMEM
Message An unnamed member does not have a bitfield, struct, or union type. Member is ignored. Description An unnamed member of a struct or union type has no meaning unless it is a bitfield or a struct/union type. The compiler will ignore this member. User Action If the member is desired, give it a name. Otherwise remove the unnamed member.
41.777 - UNNAMEPARM
Message In the definition of the function <name>, a parameter has no name. Description This function declaration contained a parameter type but no parameter name. User Action Provide a name for the formal parameter.
41.778 - UNNECCDD
Message It is not necessary to include this dictionary directive, if other unused dictionary directives and unused include directives are removed. Description There is some reference to this file from an unused include file or from an unused dictionary directive when using the current set of compilation options. If you remove the unused include files and unused dictionary directives, this dictionary directive could also be eliminated when compiling with the current set of compilation options. User Action When compiling with the current set of compilation options, to increase compilation efficiency you may exclude this dictionary directive if you also remove other unused files.
41.779 - UNNECINCL
Message It is not necessary to include this file, if other unused include directives are removed. Description There is some reference to this file from another include file or dictionary directive that is not used when using the current set of compilation options. If you remove the unused include files and unused dictionary directives, this include file could also be eliminated when compiling with the current set of compilation options. User Action When compiling with the current set of compilation options, to increase compilation efficiency you may exclude this include file if you also remove other unused files.
41.780 - UNREACHCODE
Message Code at or just after this location can never be executed<inline info>. Description The compiler has detected code that can never be executed. Often unreachable code represents a real coding error such as a label that is incorrectly spelled, or a statement that was inserted on the wrong line. But sometimes it occurs in good code as a result of logical expressions that depend only on the values of constants (typically through macro expansion). User Action Usually any code correction is obvious. And often it is straightforward to rewrite compile-time logical expressions in terms of preprocessing constructs to avoid this diagnostic. But in some programs it may be necessary to suppress this informational message explicitly in order to obtain a diagnostic-free compilation of production code, since rewriting the expression not to be evaluated at compile time would impact performance.
41.781 - UNREFADECL
Message This local identifier is declared but not referenced in this module. Description A declaration was found for an identifier which is not referenced in this module User Action Examine your code to determine if this declaration is needed in this module.
41.782 - UNREFDECL
Message This identifier is declared but not defined or referenced in this module. Description A declaration was found for an identifier which is not defined or referenced in this module User Action Examine your code to determine if this declaration is needed in this module.
41.783 - UNREFSDECL
Message A static variable is declared but never referenced in this module. Description This identifier is defined but never referenced when using the current set of compilation options. User Action Examine your code to determine if this definition is needed in this module.
41.784 - UNREFSFUNC
Message A static function definition or prototype is found, but never referenced. Description A static function declaration was found in this module, but is unused when compiling with the current settings. User Action Examine your code to determine if this function is needed in this module.
41.785 - UNREFTYP
Message This type is never referenced in this module. Description A type is declared but never referenced when using the current set of compilation options. User Action Examine your code to determine if this declaration is needed in this module.
41.786 - UNRLINKATTR
Message Unrecognized attribute for linkage pragma. Pragma is ignored. Description The compiler encountered an attribute in a #pragma linkage directive that it did not recognize. The message should point to the offending attribute. The compiler will ignore the entire pragma. User Action Correct the directive.
41.787 - UNSIGNEDPRES
Message <Context> the conversion of the unsigned char/short value "<expression>" to unsigned int shows one example of this program's use of unsigned-preserving integral promotion. This differs from the value-preserving semantics of standard C compilers. Description This expression shows one of possibly many places where this compilation uses unsigned-preserving semantics for small integer promotions rather than value-preserving semantics required of standard C compilers. In cases where an unsigned char or unsigned short int is promoted to an integer, there are two different ways the convert could happen. Standard C requires that the type be converted to a signed int (value-preserving semantics) while some older compilers will convert to an unsigned int (unsigned-preserving semantics). The difference in the choice of int or unsigned int can have an impact on results of expressions that use the converted value. The compiler cannot determine whether or not a particular instance of this usage will cause an observable behavior difference in the program. For more information, consult Section 3.2.1.1 of the Rationale for ANSI C. User Action Be aware that standard compilers might interpret this expression differently.
41.788 - UNSTRUCTMEM
Message The declaration of a member that is an unnamed struct or union type is an extension and might not be portable. Description Compaq C allows a member of a struct or union to be an unnamed struct or union type. This is an extension of Compaq C that other compilers might not support. In addition this behavior does not conform to the C standard. User Action If portability is desired, provide a name for the struct/union member.
41.789 - UNSUPCONV
Message Hexadecimal floating point constants are not yet implemented. Description Hexadecimal floating point constants are a new C99 feature that is not yet supported on this platform. User Action Please use traditional syntax for floating point numbers.
41.790 - UNSUPCONVSPEC
Message <Context> this argument to <function name> has a conversion specification "<incorrect conversion>" that is not supported or not fully supported on this platform. Description The compiler has detected a conversion specification that will not work as specified on this platform. User Action Review the documentation for this function and modify the conversion specification as necessary to accomplish your objective.
41.791 - UNSUPCONVV
Message Hexadecimal floating point constants are not supported on this platform. Description Hexadecimal floating point constants are a new feature in C99 that is not being implemented on the VAX platform. User Action Please use traditional syntax for floating point numbers.
41.792 - UNSUPIEEE
Message The _FASTMATH version of this function has been specified, but _FASTMATH routines do not support the IEEE behaviors requested and will simply trap and terminate when given arguments or computing values outside the normal range. Description The compiler has recognized a math intrinsic function that has a _FASTMATH version and the compilation has defined the macro _FASTMATH, but command line options have also specified IEEE trapping behaviors other than the default of flushing underflow to zero and aborting on all others. User Action If the body of your code relies on IEEE denormals, infinities, or nans, but is careful to condition the arguments to math library functions to avoid passing or computing these values, you may ignore or suppress this warning. Otherwise, you should either remove the options specifying non-default IEEE behavior or else undefine the _FASTMATH macro.
41.793 - UNSUPPTYPE
Message The CDD description for <name> specifies a data type not supported in C. Description There is no Compaq C datatype to exactly represent this type. Compaq C has created a declaration of the same total size as the unsupported data type. User Action If the type provided by the Compaq C compiler is not satisfactory, change the CDD description to one that the compiler can represent more exactly.
41.794 - UNUSEDCDD
Message This CDD record appears to be unused. Description The contents of this CDD record are not used by the rest of the compilation. User Action For compilation efficiency, you can exclude this dictionary directive when compiling with the current set of compilation options.
41.795 - UNUSEDINCL
Message This nested include file appears to be unused. Description The contents of this include file are not used by the rest of the compilation. User Action For compilation efficiency, you can exclude this include file when compiling with the current set of compilation options.
41.796 - UNUSEDTOP
Message This include directive does not contribute to the compilation, perhaps because the file has already been included. Description The contents of this top-level include file are not used by the rest of the compilation. This message can occur when the include file has already been included, perhaps by a nested include file. User Action For compilation efficiency, you can exclude this include file when compiling with the current set of compilation options.
41.797 - USELESSALIGN
Message <Context> _align cannot be used with the <class> storage class. Modifier _align is ignored. Description The storage class modifier _align is meaningless for objects declared with register, globalref, or globalvalue storage class. The compiler ignores the _align. User Action Remove the _align storage class modifier.
41.798 - USELESSSTOMOD
Message <Context> <noshare or readonly> cannot be used with the typedef storage class. Modifier is ignored. Description The storage class modifiers noshare and readonly are meaningless for typedefs. The compiler ignores the storage class modifier. User Action Remove the storage class modifier.
41.799 - USELESSTYPED
Message This typedef declaration is useless because it does not declare a typedef name. Description This typedef declaration does not declare a typedef name. This case can occur when a declaration tries to declare both a tag and a typedef, but the name of the typedef is not included. User Action Either remove the typedef keyword or add a typedef name.
41.800 - VAARGSBODY
Message __VA_ARGS__ may not appear except in a function-like macro that uses the ellipsis notation in the parameters. Description The identifier __VA_ARGS__ may only appear in the replacement list of a function-like macro definion that uses ellipsis notation in the parameters. User Action Either remove __VA_ARGS__ or change its spelling.
41.801 - VAARGSFORMAL
Message __VA_ARGS__ may not be used as a formal parameter. Description The identifier __VA_ARGS__ may only appear in the replacement list of a function-like macro definion that uses ellipsis notation in the parameters. User Action Rename the formal parameter.
41.802 - VALUEPRES
Message <Context> the conversion of the unsigned char/short value "<expression>" to signed int shows one example of this program's use of value-preserving integral promotion. This differs from the unsigned-preserving semantics of some older C compilers. Description This expression shows one of possibly many places where this compilation uses value-preserving semantics for small integer promotions rather than unsigned-preserving semantics used by some older compilers. In cases where an unsigned char or unsigned short int is promoted to an integer, there are two different ways the convert could happen. Standard C requires that the type be converted to a signed int (value-preserving semantics) while some older compilers will convert to an unsigned int (unsigned-preserving semantics). The difference in the choice of int or unsigned int can have an impact on results of expressions that use the converted value. The compiler cannot determine whether or not a particular instance of this usage will cause an observable behavior difference in the program. For more information, consult Section 3.2.1.1 of the Rationale for ANSI C. User Action Be aware that older, non-standard compilers might interpret this expression differently.
41.803 - VARIANTDCL
Message A declaration of a variant struct or variant union must have a single declarator that is an identifier. Description A variant_struct or variant_union member was either not followed by a declarator or followed by more than one declarator. This is not valid. User Action Declare the variant_struct or variant_union member with a single identifier.
41.804 - VARIANTDUP
Message The anonymous struct or union member "<member name>" duplicates the name of a member in the enclosing struct or union. Description As members of an anonymous structure or union are promoted to membership of the enclosing struct/union type, the names of each element of the anonymous struct/union must not match an element name in the enclosing struct/union. This message can also be output when the variant_struct or variant_union syntax is used instead of the anonymous struct/union. User Action Choose a new name for either the offending anonymous struct/union member or the matching member of the enclosing type.
41.805 - VARIANTEXT
Message variant struct or union is a language extension. Description Declaring a member to be a variant_struct or variant_union is a language extension of Compaq C. Other C compilers might not successfully compile a program that uses the extension. User Action Consider using an anonymous struct or union (one without a tag or declarator) instead: anonymous structs/unions are supported by Compaq C and some other vendors' C compilers.
41.806 - VARIANTTAG
Message A variant struct or union cannot have a tag. Description A variant_struct or variant_union declaration specified a tag name. This is not allowed. User Action Either remove the tag or change the declaration to be a regular struct or union instead of a variant struct or union.
41.807 - VARNOMEM
Message A variant struct or variant union can occur only as a member of a struct or union. Description A declaration contained a variant_struct or variant_union in some place other than a member of a struct or union. This is not valid. User Action Correct the offending declaration.
41.808 - VERTICALSPDIR
Message Vertical whitespace within pp directive. Description Unexpected vertical white space as been encountered within a preprocessing directive. User Action Remove the vertical white space from the directive.
41.809 - VLAEXTENSION
Message <Context> variable length arrays are a new feature in the C99 standard. Other C compilers may not support this extension. Description This is a new language feature in the C99 revision of the standard. While having a standard specification for portability, the feature may not yet be available in all of the compilers you use. User Action Determine whether or not the use of this feature will cause portability problems for this code.
41.810 - VOIDRETURN
Message The function "<name>" has return type void, and so must not contain a return statement with an expression. Description The current function was declared with a void return type. The expression specified in the return value will be evaluated but will not be returned to the caller. User Action Either change the return type in the function declaration or remove the return value from the return statement.
41.811 - VOIDRETURN1
Message The function "<name>" has return type void. The return statement must not specify a return value even if the return expression has void type. Description The current function was declared with a void return type. Although some C compilers allow such a function to return a void expression, this is a violation of the C standard and may not be portable. User Action Modify the program so that the return statement does not specify a return value.
41.812 - VOLATILEFUNC
Message Ignoring volatile type qualifier in declaration of <name>. Description The volatile type qualifier cannot be used with a function type. The compiler will ignore the type qualifier. User Action Remove the type qualifier.
41.813 - WRTINNOWRT
Message Writable variable resides in nowrt extern model. Description The current extern model places all external objects in a read-only section. An object without a const type qualifier in such a section means that while the compiler will not diagnose writes to the object, any attempt to modify the object at runtime will cause the program to fail. This might not have been what you intended. User Action Place non-const objects in sections that can be modified.
41.814 - XFERINTOVLA
Message This statement performs an invalid transfer into a block that declares a variably modified type or object. The identifier "<name>" is variably modified, and declared at <where>. Description It is invalid to transfer control into a block after that block declares a variably modified type. User Action Either remove the transfer, or move the declaration of the variably modified type.
41.815 - XTRALARGE
Message Line number is greater than the 32767 specified by the C standard and might not be portable. Description A #line preprocessing directive specified a line value that is greater than 32767. While the value is supported by Compaq C, the C89 standard specifies that the value must not be greater than 32767. Therefore, this program does not conform to the C89 standard, and the directive might not be accepted by other C compilers. User Action Be aware of this if you wish to port the program.
41.816 - ZERODIV
Message <Context> division by zero occurs in evaluating the expression "<expression>". Description A divide by zero occurred while evaluating a constant expression. The value of the expression is undefined. User Action Correct the constant expression so that it does not contain a division by zero.
41.817 - ZERODIVIDE
Message Division by zero in expression. Description A divide by zero occurs in a preprocessor constant expression. The result of the divide will be zero. User Action Correct the preprocessor constant expression.
41.818 - ZEROELEMENTS
Message <Context> zero cannot be used as an element count specifier. The specifier will be ignored, (leaving the member/parameter with an incomplete array type) in this context. Description The C standard states that if an element count specifier is a constant expression then it shall have a value greater than zero. For compatibility with some other C compilers, Compaq C will accept a zero element count specifier. When appearing in a struct/union member or a parameter, the specifier will be ignored. User Action Remove the zero.
41.819 - ZEROELEMENTS1
Message <Context> zero cannot be used as an element count specifier. It will be replaced with the constant one in this context. Description The C standard states that if an element count specifier is a constant expression then it shall have a value greater than zero. For compatibility with some other C compilers, Compaq C will accept a zero element count specifier. When appearing outside a struct/union member or a parameter, the compiler will replace the zero with the value one. This may or may not be compatible with the behavior of other C compilers. User Action Use a valid element count specifier.
42 - Language topics |
Compaq C language topics
42.1 - Block
A block is a compound statement. It allows more than one statement to appear where a single statement ordinarily is used. It is made up of a list of declarations and statements, enclosed in braces: { [declaration ...] [statement ...] } The declaration list is optional; if it is included, all declarations of variables are local to the block and supersede previous declarations for the duration of the block. A block is entered normally when control flows into it, or when a goto statement transfers control to a label at the beginning of the block. Each time the block is entered normally, storage is allocated for auto or register variables. If, on the other hand, a goto statement transfers control to a label inside the block or if the block is the body of a switch statement, these storage allocations do not occur. Blocks can be used wherever single statements are valid -- for example, as the action clause of an if statement: if ( i < 1 ) { /* BEGINNING OF BLOCK */ char x; for (x = 'a'; x <= 'z'; x++) printf("char = %c\n", x); } /* END OF BLOCK */
42.2 - Valid File Specifications
In Compaq C source programs, you can include both OpenVMS and UNIX* style file specifications. Combinations of the two specifications are not supported by Compaq C. Example of a valid UNIX* file specification: beatle!/dba0/lennon/songs.lis.3 Example of an invalid UNIX* file specification: BEATLE::DBA0:[LENNON.C]/songs.lis.3 ---------- * UNIX is a trademark of The Open Group.
42.3 - Data Types
The data type of an object must be specified in its declaration. The fundamental data types are the scalar types: short int 16-bit signed integer signed short int 16-bit signed integer unsigned short int 16-bit unsigned integer int 32-bit signed integer signed int 32-bit signed integer unsigned int 32-bit unsigned integer long int 32-bit signed integer signed long int 32-bit signed integer unsigned long int 32-bit unsigned integer char 8-bit signed integer signed char 8-bit signed integer unsigned char 8-bit unsigned integer wchar_t Long character (32-bit unsigned integer) float 32-bit (single-precision) floating-point number double 64-bit (double-precision) floating-point number long float Interchangeable with double, but usage is obsolete _Bool An unsigned int that has the value 0 or 1 _Imaginary A C99-specified data type. In Compaq C, use of the _Imaginary keyword produces a warning, which is resolved by treating it as an ordinary identifier. The signed keyword is the default. Declaring an object with int, for example, is equivalent to declaring it with signed int. However, char declarations should be explicitly declared, as the compiler offers command-line options to change the default. If in doubt, use signed char over char because signed char is more portable. Strings are arrays of characters terminated by the null character (\0). Also, view the contents of the <ints.h> header file for definitions of platform-specific integer types.
42. 3.1 - Array
An array is an aggregate of subscripted elements of the same type. Elements of an array can have one of the fundamental data types or can be structures, unions, or other arrays (multidimensional arrays). An array is declared using square brackets. The following example declares array1 to be an array of 10 integers. The valid subscripts for array1 range from 0 to 9. int array1[10]; The next example declares array2 to be a two-dimensional (2 by 3) array of integers: int array2[2][3]; The elements are stored in row-major order as follows: array2[0][0], array2[0][1], ... array2[1][2].
42. 3.2 - enum
An enumerated type is used to restrict the possible values of an object to a predefined list. Elements of the list are called enumeration constants. The main use of enumerated types is to explicitly show the symbolic names, and therefore the intended purpose, of objects that can be represented with integer values. Objects of enumerated type are interpreted as objects of type signed int, and are compatible with objects of other integral types. The compiler automatically assigns integer values to each of the enumeration constants, beginning with 0. An enumerated type is a set of scalar objects that have type names. Variables are declared with enum specifiers in the place of the type specifier. An enumerated type can have one of the following forms: enum { enumerator,... } enum tag { enumerator,... } enum tag Each enumerator defines a constant of the enumerated type (tag). The enumerator list forms an ordered list of the type's values. Each enumerator has the form "identifier [= expression]", where the "identifier" is the name to be used for the constant value and the optional "expression" gives its integer equivalent. If a tag appears but no list of enumerators, the enum-specifier refers to a previous definition of the enumerated type, identified by the tag. The following example declares an enumerated object 'background_color' with a list of enumeration constants: enum colors { black, red, blue, green, } background_color; Later in the program, a value can be assigned to the object 'background_color': background_color = red; In this example, the compiler automatically assigns the integer values as follows: black = 0, red = 1, blue = 2, and green = 3. Alternatively, explicit values can be assigned during the enumerated type definition: enum colors { black = 5, red = 10, blue, green = black+2 }; Here, black equals the integer value 5, red = 10, blue = 11, and green = 7. Note that blue equals the value of the previous constant (red) plus one, and green is allowed to be out of sequential order. Because the ANSI C standard is not strict about assignment to enumerated types, any assigned value not in the predefined list is accepted without complaint.
42. 3.3 - Pointer
A pointer in C is a variable that holds the address of another variable. Pointers are declared with the asterisk operator. For example: int i, *ip, *np; /* i IS AN INTEGER, ip AND np ARE POINTERS TO INTEGERS */ The following operations are permitted on pointers: o Assigning an address to the pointer (as in ip = &i;) o Fetching the object of the pointer (by dereferencing the pointer) with the asterisk operator (i = *ip;, which assigns the addressed integer to i) o Adding (as in ip += 5;, which makes ip point to the object that is five longwords away from the initial address in ip) o Subtracting (as in i = np - ip;, which gives the number of objects separating the objects pointed to by np and ip)
42. 3.4 - Structure
A structure is an aggregate of members whose data types can differ. Members can be scalar variables, arrays, structures, unions, and pointers to any object. The size of a structure is the sum of the sizes of its members, which are stored in the order of their declarations. Structures are defined with the keyword struct, followed by an optional tag, followed by a structure-declaration list in braces. The syntax is: struct [identifier] { struct-declaration ... } Each struct-declaration is a type specifier (type keyword, struct tag, union tag, enum tag, or typedef name) followed by a list of member declarators: type-specifier member-declarator,... ; Each member declarator defines either an ordinary variable or a bit field: declarator or [declarator] : constant-expression The following example declares a new structure employee with two structure variables bob and susan of the structure type employee: struct employee { char *name; int birthdate; /* name, birthdate, job_code, and salary are */ int job_code; /* treated as though declared with const. */ float salary; }; struct employee bob, susan;
42. 3.5 - typedef
Use the typedef keyword to define an abbreviated name, or synonym, for a lengthy type definition. Grammatically, typedef is a storage-class specifier, so it can precede any valid declaration. In such a declaration, the identifiers name types instead of variables. For example: typedef char CH, *CP, STRING[10], CF(); In the scope of this declaration, CH is a synonym for "character," CP for "pointer to character," STRING for "10-element array of characters," and CF for "function returning a character." Each of the type definitions can be used in that scope to declare variables. For example: CF c; /* c IS A FUNCTION RETURNING A CHARACTER */ STRING s; /* s IS A 10-CHARACTER STRING */
42. 3.6 - Union
A union is an aggregate of members whose data types can differ. Members can be scalar variables, arrays, structures, unions, and pointers to any object. The size of a union is the size of its longest member plus any padding needed to meet alignment requirements. All its members occupy the same storage. Unions are defined with the union keyword, followed by an optional tag, followed by a union-declaration list in braces. The syntax is: union [identifier] { union-declaration ... } Each union-declaration is a type specifier (type keyword, struct tag, union tag, enum tag, or typedef name) followed by a list of member declarators: type-specifier member-declarator,... ; Each member declarator defines either an ordinary variable or a bit field: declarator or [declarator] : constant-expression Once a union is defined, a value can be assigned to any of the objects declared in the union declaration. For example: union name { dvalue; struct x { int value1; int value2; }; float fvalue; } alberta; alberta.dvalue = 3.141596; /*Assigns pi to the union object*/ Here, alberta can hold a double, struct, or float value. The programmer has responsibility for tracking the current type contained in the union. The type is maintained until explicitly changed. An assignment expression can be used to change the type of value held in the union.
42. 3.7 - Void
You can use the void data type to declare functions that do not return a value. Functions declared to be of this type cannot contain return statements and cannot be used in statements where a return value is expected. The void data type can be used in the cast operation if casting to a "function without a return value ...". You can also use the void data type with pointers.
42.4 - Declarations
Declarations specify the functions and variables referenced in a program. Declarations in C have the following syntax: declaration: declaration-specifiers [init-declarator-list]; declaration-specifiers: storage-class-specifier [declaration-specifiers] type-specifier [declaration-specifiers] type-qualifier [declaration-specifiers] init-declarator-list: init-declarator init-declarator-list, init-declarator init-declarator: declarator declarator = initializer Note the following items about the general syntax of a declaration: o The storage-class-specifier, type-qualifier, and type-specifier can be listed in any order. All are optional, but, except for function declarations, at least one such specifier or qualifier must be present. Placing the storage-class-specifier anywhere but at the beginning of the declaration is an obsolete style. o Storage-class keywords are auto, static, extern, and register. o Type qualifiers are const, volatile, and __restrict. o The declarator is the name of the object being declared. A declarator can be as simple as a single identifier, or can be a complex construction declaring an array, structure, pointer, union, or function (such as *x, tree(), and treebar[10]). o Initializers are optional and provide the initial value of an object. An initializer can be a single value or a brace-enclosed list of values, depending on the type of object being declared. o A declaration determines the beginning of an identifier's scope. o An identifier's linkage is determined by the declaration's placement and its specified storage class. Consider the following example: volatile static int var_number = 10; This declaration shows a qualified type (a type, int, with a type qualifier, volatile), a storage class (static), a declarator (data), and an initializer (10). This declaration is also a definition, because storage is reserved for the data object var_number. For more information, see HELP CC LANGUAGE_TOPICS DATA_TYPES, HELP CC LANGUAGE_TOPICS STORAGE_CLASSES, and HELP CC LANGUAGE_TOPICS TYPE_QUALIFIERS.
42. 4.1 - Interpretation
The symbols used in declarations are C operators, subject to the usual rules of precedence and associativity. These operators are parentheses, brackets, and asterisks for "function returning...", "array of...", and "pointer to...", respectively. Parentheses and brackets associate left to right; asterisk operators associate right to left. Parentheses and brackets have the same precedence, which is higher than that of asterisks. Parentheses are also used to change the associativity of the other operators. The following declaration, for example, is a "function returning a pointer to an array of pointers to char": char * ( *x() ) []; This is how the declaration is broken down to determine what it is: char * ( *x() ) []; * ( *x() ) [] is char ( *x() ) [] is (pointer to) char *x() is (array of) (pointer to) char x() is (pointer to) (array of) (pointer to) char x is (function returning) (pointer to) (array of) (pointer to) char In this sort of breakdown, lower precedence operators are removed first. With two equal precedence operators, remove the rightmost if they are left-to-right operators, and the leftmost if they are right-to-left operators. For example, "[]()" means "array of functions returning...".
42.5 - Functions
Functions consist of one or more blocks of statements that perform one logical operation. They can be called from other functions either in the same program or in different programs. A function may exchange values with the calling function by use of parameters. Function declarations have the following syntax: function_name() or function_name(arg1, arg2,...) or function_name(data-type arg1, data-type arg2,...) In the first form of the function declaration, the function takes no arguments. In the second form, the function takes arguments; the arguments are declared outside the parameter list. In the third form, the function declaration is a function prototype that specifies the type of its arguments in the identifier list; the prototype form is recommended. In all three cases, the parenthesis after the function name are required. Compaq C for OpenVMS Systems provides a library of common functions. These functions perform standard I/O operations, character and string handling, mathematical operations, miscellaneous system services, and UNIX* system emulation. For more information, see HELP CC RUN-TIME_FUNCTIONS. ---------- * UNIX is a trademark of The Open Group.
42.6 - Builtin Functions
Built-in functions allow you to directly access hardware and machine instructions to perform operations that are cumbersome, slow, or impossible in pure C. These functions are very efficient because they are built into the Compaq C compiler. This means that a call to one of these functions does not result in a reference to a function in the C run-time library or in your programs. Instead, the compiler generates the machine instructions necessary to carry out the function directly at the call site. Because most of these built-in functions closely correspond to single VAX or Alpha machine instructions, the result is small, fast code. Some of these functions (such as those that operate on strings or bits) are of general interest. Others (such as the functions dealing with process context) are of interest if you are writing device drivers or other privileged software. Some of the functions are privileged and unavailable to user mode programs. Be sure to include the <builtins.h> header file in your source program to access these built-in functions. Compaq C supports the #pragma builtins preprocessor directive for compatibility with VAX C, but it is not required. Some of the built-in functions have optional arguments or allow a particular argument to have one of many different types. To describe different valid combinations of arguments, the description of each built-in function may list several different prototypes for the function. As long as a call to a built-in function matches one of the prototypes listed, the call is valid. Furthermore, any valid call to a built-in function acts as if the corresponding prototype was in scope, so the compiler performs the argument checking and argument conversions specified by that prototype. The majority of the built-in functions are named after the machine instruction that they generate. For more information on these built-in functions, see the documentation on the corresponding machine instruction. In particular, see that reference for the structure of queue entries manipulated by the queue built-in functions. The Compaq C for OpenVMS VAX built-in functions use enumerated typedefs to define possible return values. We recommend that you use the enumerated types to store and compare return values.
42. 6.1 - Add Aligned Word Interlocked
The _ADAWI function adds its source operand to the destination. This operation is interlocked against similar operations by other processors or devices in the system. Syntax: typedef enum {_adawi_sum_neg=-1, _adawi_sum_zero, _adawi_sum_pos} _ADAWI_STATUS; _ADAWI_STATUS _ADAWI(short __src, short *__dest);
42. 6.2 - ALLOCA
Allocates n bytes from the stack and returns a pointer to the allocated memory. Syntax: void *__ALLOCA (unsigned int n);
42. 6.3 - Branch on Bit Clear-Clear Interlocked
The _BBCCI function performs the following functions in interlocked fashion: o Returns the complement of the bit specified by the two arguments o Clears the bit specified by the two arguments Syntax: typedef enum {_bbcci_oldval_1, _bbcci_oldval_0} _BBCCI_STATUS; _BBCCI_STATUS _BBCCI(int __position, void *__address);
42. 6.4 - Branch on Bit Set-Set Interlocked
The _BBSSI function performs the following functions in interlocked fashion: o Returns the status of the bit specified by the two arguments o Sets the bit specified by the two arguments Syntax: typedef enum {_bbssi_oldval_0, _bbcci_oldval_1} _BBSSI_STATUS; _BBSSI_STATUS _BBSSI(int __position, void *__address);
42. 6.5 - Find First Clear Bit
The _FFC function finds the position of the first clear bit in a field. The bits are tested for clear status starting at bit 0 and extending to the highest bit in the field. Syntax: typedef enum {_ff_bit_not_found, _ff_bit_found} _FF_STATUS; _FF_STATUS _FFC(int __start, char __size, const void * __base, int *__position);
42. 6.6 - Find First Set Bit
The _FFS function finds the position of the first set bit in a field. The bits are tested for set status starting at bit 0 and extending to the highest bit in the field. Syntax: typedef enum {_ff_bit_not_found, _ff_bit_found} _FF_STATUS; _FF_STATUS _FFS(int __start, char __size, const void *__base, int *__position);
42. 6.7 - Halt
The _HALT function halts the processor when executed by a process running in kernel mode. This is a privileged function. Syntax: void _HALT(void);
42. 6.8 - Insert Entry into Queue at Head Interlocked
The _INSQHI function inserts an entry into the front of a queue in an indivisible manner. This operation is interlocked against similar operations by other processors or devices in the system. Syntax: typedef enum {_insqi_inserted_many, _insqi_not_inserted, _insqi_inserted_only} _INSQI_STATUS; _INSQI_STATUS _INSQHI(void *__new_entry, void *__head);
42. 6.9 - Insert Entry into Queue at Tail Interlocked
The _INSQTI function inserts an entry at the end of a queue in an indivisible manner. This operation is interlocked against similar operations by other processors or devices in the system. Syntax: typedef enum {_insqi_inserted_many, _insqi_not_inserted, _insqi_inserted_only} _INSQI_STATUS; _INSQI_STATUS _INSQTI(void *__new_entry, void *__head);
42. 6.10 - Insert Entry in Queue
The _INSQUE function inserts a new entry into a queue following an existing entry. Syntax: typedef enum {_insque_inserted_only, _insque_inserted_many} _INSQUE_STATUS; _INSQUE_STATUS _INSQUE(void *__new_entry, void *__predecessor);
42. 6.11 - Locate Character
The _LOCC function locates the first character in a string matching the target character. Syntax: unsigned short _LOCC(char __target, unsigned short __length, const char *__string, ...); where the optional argument (...) is char **position.
42. 6.12 - Move from Processor Register
The _MFPR function returns the contents of a processor register. This is a privileged function. Syntax: void _MFPR(int register_num, int *destination); void _MFPR(int register_num, unsigned int *destination);
42. 6.13 - Move Character 3 Operand
The _MOVC3 function copies a block of memory. It is the preferred way to copy a block of memory to a new location. Syntax: void _MOVC3(unsigned short __length, const char *__src, char *__dest, ...); where the ... is one or two optional arguments: o char **endscr o char **enddest
42. 6.14 - Move Character 5 Operand
The _MOVC5 function allows the source string specified by the pointer and length pair to be moved to the destination string specified by the other pointer and length pair. If the source string is smaller than the destination string, the destination string is padded with the specified character. Syntax: void _MOVC5(unsigned short __srclen, const char *__src, char __fill, unsigned short __destlen, char *__dest, ...); where the ... is one to three optional arguments: o unsigned short *unmoved_src o char ** endscr o char **enddest
42. 6.15 - Move from Processor Status Longword
The _MOVPSL function stores the value of the Processor Status Longword (PSL). Syntax: void _MOVPSL(void *__psl);
42. 6.16 - Move to Processor Register
The _MTPR function loads a value into one of the special processor registers. It is a privileged function. Syntax: int _MTPR(int src, int register_num);
42. 6.17 - Probe Read Accessibility
The _PROBER function checks to see if you can read the first and last byte of the given address and length pair. Syntax: typedef enum {_probe_not_accessible, _probe_accessible} _PROBE_STATUS; _PROBE_STATUS _PROBER(char __mode, unsigned short __length, const void *__address);
42. 6.18 - Probe Write Accessibility
The _PROBEW function checks the write accessibility of the first and last byte of the given address and length pair. Syntax: typedef enum {_probe_not_accessible, _probe_accessible} _PROBE_STATUS; _PROBE_STATUS _PROBEW(char __mode, unsigned short __length, const void *__address);
42. 6.19 - Read General-Purpose Register
The _READ_GPR function returns the value of a general-purpose register. Syntax: int _READ_GPR(int register_number);
42. 6.20 - Remove Entry from Queue at Head Interlocked
The _REMQHI function removes the first entry from the queue in an indivisible manner. This operation is interlocked against similar operations by other processors or devices in the system. Syntax: typedef enum {_remqi_removed_more, _remqi_not_removed, _remqi_removed_empty, _remqi_empty} _REMQI_STATUS; _REMQI_STATUS _REMQHI(void *__head), void *__removed_entry);
42. 6.21 - Remove Entry from Queue at Tail Interlocked
The _REMQTI function removes the last entry from the queue in an indivisible manner. This operation is interlocked against similar operations by other processors or devices in the system. Syntax: typedef enum {_remqi_removed_more, _remqi_not_removed, _remqi_removed_empty, _remqi_empty} _REMQI_STATUS; _REMQI_STATUS _REMQTI(void *__head, void *__removed_entry);
42. 6.22 - Remove Entry from Queue
The _REMQUE function removes an entry from a queue. Syntax: typedef enum {_remque_removed_more, _remque_removed_empty, _remque_empty} _REMQUE_STATUS; _REMQUE_STATUS _REMQUE(void *__entry, void *__removed_entry);
42. 6.23 - Scan Characters
The _SCANC function locates the first character in a string with the desired attributes. The attributes are specified through a table and a mask. Syntax: unsigned short _SCANC(unsigned short __length, const char *__string, const char *__table, char __mask, ...); where the optional argument (...) is char **match.
42. 6.24 - Skip Character
The _SKPC function locates the first character in a string that does not match the target character. Syntax: unsigned short _SKPC(char __target, unsigned short __length, const char *__string, ... ); where the optional argument (...) is char **position.
42. 6.25 - Span Characters
The _SPANC function locates the first character in a string without certain attributes. The attributes are specified through a table and a mask. Syntax: unsigned short _SPANC(unsigned short __length, const char *__string, const char *__table, char __mask, ...); where the optional argument (...) is char **mask.
42.7 - Variable Length Argument Lists
The set of functions and macros defined and declared in the <varargs.h> and the <stdarg.h> header files provide a method of accessing variable-length argument lists. (Note that the <stdarg.h> functions are defined by the ANSI C standard and are, therefore, portable as compared with those defined in <varargs.h>.) The Compaq C RTL functions such as printf and execl, for example, use variable-length argument lists. User-defined functions with variable-length argument lists that do not use <varargs.h> or <stdarg.h> are not portable due to the different argument-passing conventions of various machines. To use these functions and macros in <stdarg.h>, you must include the <stdarg.h> header file with the following preprocessor directive: #include <stdarg.h> The <stdarg.h> header file declares a type (va_list) and three macros (va_start, va_arg, and va_end) for advancing through a list of function arguments of varying number and type. The macros have the following syntax: void va_start(va_list ap, parmN); type va_arg(va_list ap, type); void va_end(va_list ap); The va_start macro initializes the object ap of type va_list for subsequent use by va_arg and va_end. The va_start macro must be invoked before any access to the unnamed arguments. The parameter parmN is the identifier of the rightmost parameter in the variable parameter list of the function definition. If parmN is declared with the register storage class, with a function or array type, or with a type that is not compatible with the type that results after application of the default arguments promotions, the behavior is undefined. The va_start macro returns no value. The va_arg macro expands to an expresion that has the type and value of the next argument in the call. The parameter ap is the same as the one initialized by va_start. Each invocation of va_arg modifies ap so that the values of successive arguments are returned in turn. The parameter "type" is a type name specified such that the type of a pointer to an object that has the specified type can be obtained by postfixing an asterisk (*) to "type". If there is no actual next argument, or if type is not compatible with the type of the next actual argument (as promoted according to the default argument promotions), the behavior is undefined. The first invocation of va_arg after that of va_start returns the value of the argument after that specified by parmN. Successive invocations return the values of the remaining arguments in turn. The va_end macro facilitates a normal return from the function whose variable argument list was referred to by the expansion of va_start that initialized the va_list ap object. The va_end macro can modify ap) so that it can no longer be used (without an intervening invocation of va_start). If there is no corresponding invocation of va_start or if va_end is not invoked before the return, the behavior is undefined. The va_end macro returns no value.
42.8 - Preprocessor
The Compaq C preprocessor uses directives to affect the compilation of a source file. For Compaq C on OpenVMS systems, these directives are processed by an early phase of the compiler, not by a separate program. The preprocessor directives begin with a number sign (#) and do not end with a semicolon. The number sign must appear in the first column of the source line.
42. 8.1 - Null directive (#)
A preprocessing directive of the form # <newline> is a null directive and has no effect.
42. 8.2 - Conditional Compilation
Conditional compilation is provided by the following directives: #if constant-expression Checks whether the constant expression is nonzero (true). #ifdef identifier Checks whether the identifier is defined. #ifndef identifier Checks whether the identifier is undefined. #else Introduces source lines to be compiled as an alternative to the conditions tested by the previous directives. #elif constant-expression Delimits alternative source lines to be compiled if the constant expression in the corresponding #if, #ifdef, or #ifndef directive is false and if the additional constant expression presented in the #elif directive is true. An #elif directive is optional. #endif Ends the scope of the previous directives. If the condition checked by #if, #ifdef, or #ifndef is true, then all lines between the #else, #elif, and #endif are ignored. If the condition is false, then any lines between the conditional directive and the #else or #elif (if any) are ignored. If there is no #else, then the lines between the conditional and the #endif are ignored.
42. 8.3 - #define
The #define preprocessor directive has the form: #define identifier token-string The preprocessor substitutes the token string everywhere in the program that it finds the identifier except within comments, character constants, or string constants. Macro replacements are defined in a #define directive of the following form: #define name([parm1[,parm2,...]]) token-string Within the program, all macro references that have the following form are replaced by the token string. The arguments in the macro reference replace the corresponding parameters in the token string. name([arg1[,arg2,...]])
42. 8.4 - #dictionary
The #dictionary directive is retained for compatibility with VAX C and is supported only when running the Compaq C compiler in VAX C mode (/STANDARD=VAXC). See also the ANSI C equivalent #pragma dictionary directive. The #dictionary directive extracts Common Data Dictionary (CDD) definitions from the specified dictionary. These definitions are then translated into Compaq C and included in the program. The #dictionary directive has the following form: #dictionary "cdd_path" The cdd_path is a character string that gives the path name of the CDD record. It can also be a macro that resolves to such a character string.
42. 8.5 - #error
The #error directive issues an optional diagnostic message, and ends compilation. This directive has the following form: #error [message] <newline>
42. 8.6 - #include
The #include directive instructs the preprocessor to insert the contents of the specified file or module into the program. An #include directive can have one of three forms: #include "filespec" #include <filespec> #include module-name The first two forms are ANSI-compliant methods of file inclusion and are therefore more portable. In these forms, .h is the default file type, unless the compiler is instructed to supply no default type (that is, a type of just ".") by the /ASSUME=NOHEADER_TYPE_DEFAULT qualifier. The third form is specific to OpenVMS systems for specifying the inclusion of a module from a text library, and is not generally needed or recommended because the ANSI forms also cause the text libraries to be searched. For the order of search, see /INCLUDE_DIRECTORY. There is no defined limit to the nesting level of #include files and modules.
42. 8.7 - #line
The #line directive applies a specified line number and optional file specification to the next line of source text. This can be useful for diagnostic messages. The #line directive has the following forms: #line integer-constant <newline> #line integer-constant "filename" <newline> #line pp-tokens <newline> In the first two forms, the compiler gives the line following a #line directive the number specified by the integer constant. The optional filename in quotation marks indicates the name of the source file that the compiler will provide in its diagnostic messages. If the filename is omitted, the file name used is the name of the current source file or the last filename specified in a previous #line directive. In the third form, macros in the #line directive are expanded before it is interpreted. This allows a macro call to expand into the integer-constant, filename, or both. The resulting #line directive must match one of the other two forms, and is then processed as appropriate.
42. 8.8 - #module
The #module directive is retained for compatibility with VAX C and is supported only when running the Compaq C compiler in VAX C mode (/STANDARD=VAXC). See also the ANSI C equivalent #pragma module directive. The #module directive passes information about an object module to the compiler. The #module directive can have one of the following forms: #module identifier identifier #module identifier string The first argument of the directive is a Compaq C identifier or macro that resolves to an identifier. It gives the system-recognized (for example, internally recognized by the debugger and the librarian) name of the module; the object file name remains the same. The second argument specifies the optional identification that appears on listings. This may be either a VAX C identifier, a character-string constant with no more than 31 characters, or a macro that resolves to one of these. There can be only one #module directive per compilation. It can appear anywhere before the C language text.
42. 8.9 - #pragma
The #pragma directive performs compiler-specific tasks as designated by each implementation of the C language. All pragmas have a <pragma-name>_m version, which makes the pragma subject to macro replacement. For example, #pragma assert is not subject to macro expansion, but #pragma assert_m is. Compaq C for OpenVMS Systems supports the following pragmas: #pragma assert[_m] Lets you specify assertions that the compiler can make about a program to generate more efficient code. Can also be used to verify that certain compile-time conditions are met; this is useful in detecting conditions that could cause run-time faults. The #pragma assert directive is never needed to make a program execute correctly, however if a #pragma assert is specified, the assertions must be valid or the program might behave incorrectly. Syntax: #pragma assert non_zero(constant-expression) string-literal When the compiler encounters this directive, it evaluates the constant-expression. If the expression is zero, the compiler generates a message that contains both the specified string-literal and the compile-time constant-expression. For example: #pragma assert non_zero(sizeof(a) == 12) "a is the wrong size" In this example, if the compiler determines that the sizeof a is not 12, the following diagnostic message is output: CC-W-ASSERTFAIL, The assertion "(sizeof(a) == 12)" was not true. a is the wrong size. The #pragma assert non_zero directive can appear either inside or outside a function body. When used inside a function body, the pragma can appear wherever a statement can appear, but the pragma is not treated as a statement. When used outside a function body, the pragma can appear anywhere a declaration can appear, but the pragma is not treated as a declaration. Because macro replacement is not performed on #pragma assert, you might need to use the #pragma assert_m directive to obtain the results you want. Consider the following program that verifies both the size of a struct and the offset of one of its elements: #include <stddef.h> typedef struct { int a; int b; } s; #pragma assert non_zero(sizeof(s) == 8) "sizeof assert failed" #pragma assert_m non_zero(offsetof(s,b) == 4) "offsetof assert failed" Because offsetof is a macro, the second pragma must be #pragma assert_m so that offsetof will expand correctly. #pragma builtins[_m] Enables the Compaq C built-in functions that directly access processor instructions. The #pragma builtins directive is provided for VAX C compatibility. Compaq C implements #pragma builtins by including the <builtins.h> header file, and is equivalent to #include <builtins.h> on OpenVMS systems. This header file contains prototype declarations for the built-in functions that allow them to be used properly. By contrast, VAX C implemented this pragma with special-case code within the compiler, which also supported a #pragma nobuiltins preprocessor directive to turn off the special processing. Because declarations cannot be "undeclared", Compaq C does not support #pragma nobuiltins. Furthermore, the names of all the built-in functions use a naming convention defined by ANSI C to be in a namespace reserved to the C language implementation. #pragma dictionary[_m] Allows you to extract CDD data definitions and include these definitions in your program. The ANSI C compliant #pragma dictionary directive is equivalent to the VAX C compatible #dictionary directive, but is supported in all compiler modes. (The #dictionary directive is retained for compatibility and is supported only when compiling with the /STANDARD=VAXC qualifier.) Syntax: #pragma dictionary "cdd_path" [null_terminate] [name(structure_name)] [text1_to_array | text1_to_char] The cdd_path is a character string that gives the path name of the CDD record. It can also be a macro that resolves to such a character string. The optional null_terminate keyword can be used to specify that all string data types should be null-terminated. The optional name() can be used to supply an alternate tag name or a declarator, struct_name for the outer level of a CDD structure. The optional text1_to_char keyword forces the CDD type "text" to be translated to char, rather than "array of char" if the size is 1. This is the default if null_terminate is not specified. The optional text1_to_array keyword forces the CDD type "text" to be translated to type "array of char" even when the size is 1. This is the default when null_terminate is specified. #pragma environment[_m] Sets, saves, or restores the states of context pragmas. This directive protects include files from contexts set by encompassing programs, and protects encompassing programs from contexts that could be set in header files that they include. The #pragma environment directive affects the following pragmas: o #pragma extern_model o #pragma extern_prefix o #pragma member_alignment o #pragma message o #pragma names o #pragma pointer_size o #pragma required_pointer_size Syntax: #pragma environment command_line #pragma environment header_defaults #pragma environment restore #pragma environment save command_line Sets, as specified on the command line, the states of all the context pragmas. You can use this pragma to protect header files from environment pragmas that take effect before the header file is included. header_defaults Sets the states of all the context pragmas to their default values. This is almost equivalent to the situation in which a program with no command-line options and no pragmas is compiled, except that this pragma sets the pragma message state to #pragma nostandard, as is appropriate for header files. save Saves the current state of every pragma that has an associated context. restore Restores the current state of every pragma that has an associated context. #pragma extern_model[_m] Controls the compiler's interpretation of objects that have external linkage. This pragma lets you choose the global symbol model to be used for externs. Syntax: #pragma extern_model common_block [attr[,attr]...] #pragma extern_model relaxed_refdef [attr[,attr]...] #pragma extern_model strict_refdef "name" [attr[,attr]...] #pragma extern_model strict_refdef #pragma extern_model globalvalue #pragma extern_model save #pragma extern_model restore The default model on Compaq C is #pragma relaxed_refdef noshr. This is different from the model used by VAX C, which is common block, shr. The [attr[,attr]...] are optional psect attribute specifications chosen from the following (at most one from each line): o gbl lcl (Not allowed with relaxed_refdef) o shr noshr o wrt nowrt o pic nopic (Not meaningful for Alpha) o ovr con o rel abs o exe noexe o vec novec o 2 long 3 quad 4 octa 9 page See the Compaq C User's Guide for more information on the #pragma extern_model directive. #pragma extern_prefix[_m] Controls the compiler's synthesis of external names, which the linker uses to resolve external name requests. When you specify #pragma extern_prefix with a string argument, the compiler prepends the string to all external names produced by the declarations that follow the pragma specification. This pragma is useful for creating libraries where the facility code can be attached to the external names in the library. Syntax: #pragma extern_prefix "string" [(id[,id]...)] #pragma extern_prefix save #pragma extern_prefix restore Where "string" prepends the quoted string to external names in the declarations that follow the pragma specification. You can also specify an extern prefix for specific identifiers using the optional list [(<emphasis>(id)[,<emphasis>(id)]...)]. The save and restore keywords can be used to save the current pragma prefix string and to restore the previously saved pragma prefix string, respectively. The default external prefix, when none has been specified by a pragma, is the null string. #pragma [no]inline[_m] Expands function calls inline. The function call is replaced with the function code itself. Syntax: #pragma inline (id,...) #pragma noinline (id,...) If a function is named in an inline directive, calls to that function will be expanded as inline code, if possible. If a function is named in a noinline directive, calls to that function will not be expanded as inline code. If a function is named in both an inline and a noinline directive, an error message is issued. For calls to functions named in neither an inline nor a noinline directive, DEC C expands the function as inline code whenever appropriate as determined by a platform-specific algorithm. #pragma [no]member_alignment[_m] Tells the compiler to align structure members on the next boundary appropriate to the type of the member rather than the next byte. For example, a long variable is aligned on the next longword boundary; a short variable on the next word boundary. Syntax: #pragma nomember_alignment [base_alignment] #pragma member_alignment [save | restore] The optional base_alignment parameter can be used with #pragma nomember_alignment to specify the base alignment of the structure. Use one of the following keywords to specify the base_alignment: o BYTE (1 byte) o WORD (2 bytes) o LONGWORD (4 bytes) o QUADWORD (8 bytes) o OCTAWORD (16 bytes) The optional save and restore keywords can be used to save the current state of the member_alignment and to restore the previous state, respectively. This feature is necessary for writing header files that require member_alignment or nomember_alignment, or that require inclusion in a member_alignment that is already set. #pragma message[_m] Controls the issuance of individual diagnostic messages or groups of messages. Use of this pragma overrides any command-line options that may affect the issuance of messages. Syntax: #pragma message option1 message-list #pragma message option2 #pragma message (quoted-string) where option1 is: disable 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 Enables the issuance of the indicated messages. emit_once Emits the specified messages only once per compilation. emit_always Emits the specified messages at every occurrence of the condition. error Sets the severity of each message in the message-list to Error. fatal Sets the severity of each message on the message-list to Fatal. informational Sets the severity of each message in the message-list to Informational. warning Sets the severity of each message in the message-list to Warning. The message-list can be any one of the following: o A single message identifier (within parentheses or not). 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 Messages reporting the use of non-ANSI Standard features. The NOANSI message group is a 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. Note, however, that unlike any other messages, these messages must be enabled on the command line (/WARNINGS=ENABLE=UNUSED) to be effective. 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 anything specified 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 disable level 0. However, you can disable individual messages in level 0 that are not errors or fatals. Message-level names are: LEVEL1 Important messages. These are less important than level 0, because messages in this group are not displayed if #pragma nostandard is active. LEVEL2 Moderately important messages. This level is used to introduce new messages that will be output in the DIGITAL UNIX V4.0 release. LEVEL2 is the default for DIGITAL UNIX and Tru64 UNIX platforms. LEVEL3 Less important messages. In general, these are the messages output by default in DEC C Version 5.5 for OpenVMS Systems. LEVEL3 is the default message level for Compaq C for OpenVMS systems. LEVEL4 Useful check/portable messages. LEVEL5 Not so useful check/portable messages. LEVEL6 All messages in LEVEL5 plus 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. option2 is: save -- saves the current state of which messages are enabled and disabled. restore -- restores the previous state of which messages are enabled and disabled. The save and restore options are useful primarily within header files. The #pragma message (quoted-string) form outputs the quoted-string as a compiler message. This form of the pragma is subject to macro replacement. For example, the following is valid: #pragma message ("Compiling file " __FILE__) #pragma module[_m] The ANSI C compliant #pragma module directive is equivalent to the VAX C compatible #module directive, but is supported in all compiler modes. (The #module directive is retained for compatibility and is supported only when compiling with the /STANDARD=VAXC qualifier.) The #pragma module directive is specific to Compaq C for OpenVMS Systems and is not portable. Use the #pragma module directive to change the system-recognized module name and version number. You can find the module name and version number in the compiler listing file and the linker load map. Syntax: #pragma module identifier identifier #pragma module identifier string The first parameter must be a valid Compaq C identifier. It specifies the module name to be used by the linker. The second parameter specifies the optional identification that appears on listings and in the object file. It must be either a valid Compaq C identifier of 31 characters or less, or a character-string constant of 31 characters or less. Only one #pragma module directive can be processed per compilation unit, and that directive must appear before any C language text. The #pragma module directive can follow other directives, such as #define, but it must precede any function definitions or external data definitions. #pragma names[_m] Provides the same kinds of control over the mapping of external identifiers' object-module symbols as does the /NAMES command-line qualifier, and it uses the same keywords (except that the "lowercase" keyword is not supported). But as a pragma, the controls can be applied selectively to regions of declarations. This pragma should only be used in header files and is intended for use by developers who supply libraries and/or header files to their customers. The pragma has a save/restore stack that is also managed by #pragma environment, and so it is well-suited for use in header files. The effect of #pragma environment header_defaults is to set NAMES to "uppercase,truncated", which is the compiler default. Syntax: #pragma names <stack-option> #pragma names <case-option> #pragma names <length-option> Where <stack-option> is one of: o save - save the current names state o restore - restore a saved names state <case-option> is one of: o uppercase - uppercase external names o as_is - do not change case <length-option> is one of: o truncated - truncate at 31 characters o shortened - shorten to 31 using CRC #pragma pack[_m] Specifies the byte boundary for packing members of C structures. Syntax: #pragma pack [n] The n specifies the new alignment restriction in bytes: 1 - align to byte 2 - align to word 4 - align to longword 8 - align to quadword 16 - align to octaword A structure member is aligned to either the alignment specified by #pragma pack or the alignment determined by the size of the structure member, whichever is smaller. For example, a short variable in a structure gets byte-aligned if #pragma pack 1 is specified. If #pragma pack 2, 4, or 8 is specified, the short variable in the structure gets aligned to word. When #pragma pack is specified with a value of 0, packing reverts to that specified by the /[NO]MEMBER_ALIGNMENT qualifier setting (either explicit or default) on the command line. #pragma [no]standard[_m] Directs the compiler to define regions of source code where portability diagnostics are not to be issued. Use #pragma nostandard to suppress diagnostics about non-ANSI C extensions, regardless of the /STANDARD qualifier specified, until a #pragma standard directive is encountered. Use #pragma standard to reinstate the setting of the /STANDARD qualifier that was in effect before before the last #pragma nostandard was encountered. Every #pragma standard directive must be preceded by a corresponding #pragma nostandard directive. Note that this pragma does not change the current mode of the compiler or enable any extensions not already supported in that mode.
42. 8.10 - #undef
The #undef directive cancels a previously defined macro replacement. Any other macro replacements that occurred before the #undef directive remain. The #undef directive has the following syntax: #undef identifier
42.9 - Predefined Macros
In addition to the ANSI-compliant, implementation-independent macros described in the Compaq C Language Reference Manual, Compaq C for OpenVMS systems provides the following predefined macros:
42. 9.1 - System Identification Macros
Each implementation of the Compaq C compiler automatically defines macros that you can use to identify the system on which the program is running. These macros can assist in writing code that executes conditionally, depending on the architecture or operating system on which the program is running. The following table lists the traditional and new spellings of these predefined macro names for Compaq C on OpenVMS systems. Both spellings are defined for each macro unless ANSI C mode is in effect (/STANDARD=ANSI89), in which case only the new spellings are defined. Traditional spelling New spelling vms __vms VMS __VMS vms_version __vms_VERSION VMS_VERSION __VMS_VERSION __VMS_VER __DECC_VER __DECCXX_VER vax __vax VAX __VAX vaxc __vaxc VAXC __VAXC vax11c __vax11C VAX11C __VAX11C --- __DECC --- __STDC__ __STDC_HOSTED__ __STDC_VERSION__ __STDC_ISO_10646__ __MIA Note that __STDC__ is defined only in strict ANSI C mode. Predefined macros (with the exception of vms_version, VMS_VERSION, __vms_version and __VMS_VERSION) are defined as 1 or 0, depending on the system you're compiling on (VAX or Alpha processor), the compiler defaults, and the qualifiers used. For example, if you compiled using G_floating format, then __D_FLOAT and __IEEE_FLOAT (Alpha processors only) are predefined to be 0, and __G_FLOAT is predefined as if the following were included before every compilation unit: #define __G_FLOAT 1 These macros can assist in writing code that executes conditionally. They can be used in #elif, #if, #ifdef, and #ifndef directives to separate portable and nonportable code in a Compaq C program. The vms_version, VMS_VERSION, __vms_version, and __VMS_VERSION macros are defined with the value of the OpenVMS version on which you are running (for example, Version 6.0).
42. 9.2 - Compiler Mode Macros
The following predefined macros are defined as 1 if the corresponding compiler mode is selected (Otherwise, they are undefined): __DECC_MODE_STRICT ! /STANDARD=ANSI89 __DECC_MODE_RELAXED ! /STANDARD=RELAXED_ANSI89 __DECC_MODE_VAXC ! /STANDARD=VAXC __DECC_MODE_COMMON ! /STANDARD=COMMON __STDC__ ! /STANDARD=ANSI89, /STANDARD=RELAXED_ANSI89 __STDC_VERSION__ ! /STANDARD=ISOC94 __MS ! /STANDARD=MS
42. 9.3 - Floating Point Macros
Compaq C automatically defines the following predefined macros pertaining to the format of floating-point variables. You can use them to identify the format with which you are compiling your program: __D_FLOAT __G_FLOAT
42. 9.4 - RTL Standards Macros
Compaq C defines the following macros that you can explicitly define (using the /DEFINE qualifier or the #define preprocessor directive) to control which Compaq C RTL functions are declared in header files and to obtain standards conformance checking: _XOPEN_SOURCE_EXTENDED _XOPEN_SOURCE _POSIX_C_SOURCE _ANSI_C_SOURCE _VMS_V6_SOURCE _DECC_V4_SOURCE __BSD44_CURSES __VMS_CURSES _SOCKADDR_LEN
42. 9.5 - HIDE FORBIDDEN NAMES
The ANSI C standard specifies exactly what identifiers in the normal name space are declared by the standard header files. A compiler is not free to declare additional identifiers in a header file unless the identifiers follow defined rules (the identifier must begin with an underscore followed by an uppercase letter or another underscore). When running the Compaq C compiler in strict ANSI C mode (/STANDARD=ANSI89), versions of the standard header files are included that hide many identifiers that do not follow the rules. The header file <stdio.h>, for example, hides the definition of the macro TRUE. The compiler accomplishes this by predefining the macro __HIDE_FORBIDDEN_NAMES in strict ANSI mode. You can use the command line qualifier /UNDEFINE="__HIDE_FORBIDDEN_NAMES" to prevent the compiler from predefining this macro, thus including macro definitions of the forbidden names. The header files are modified to only define additional VAX C names if __HIDE_FORBIDDEN_NAMES is undefined. For example, <stdio.h> might contain the following: #ifndef __HIDE_FORBIDDEN_NAMES #define TRUE 1 #endif
42. 9.6 - CC$gfloat
When you compile using the /G_FLOAT qualifier, CC$gfloat is defined as 1. When you compile without the /G_FLOAT qualifier, CC$gfloat is defined as 0. The CC$gfloat macro is provided for compatiblity with VAX C. The __G_FLOAT predefined macro should be used instead.
42. 9.7 - DATE
The __DATE__ macro evaluates to a string specifying the date on which the compilation started. The string presents the date in the form "Mmm dd yyyy" The names of the months are those generated by the asctime library function. The first d is a space if dd is less than 10. Example: printf("%s",__DATE__);
42. 9.8 - FILE
The __FILE__ macro evaluates to a string literal specifying the file specification of the current source file. Example: printf("file %s", __FILE__);
42. 9.9 - LINE
The __LINE__ macro evaluates to a decimal constant specifying the number of the line in the source file containing the macro reference. Example: printf("At line %d in file %s", __LINE__, __FILE__);
42. 9.10 - TIME
The __TIME__ macro evaluates to a string specifying the time that the compilation started. The time has the following format: hh:mm:ss Example: printf("%s", __TIME__); The value of this macro remains constant throughout the translation unit.
42.10 - Predeclared Identifiers
42. 10.1 - __func__
The __func__ predeclared identifier evaluates to a static array of char, initialized with the spelling of the function's name. It is visible anywhere within the body of a function definition. Example: void foo(void) {printf("%s\n", __func__);} This function prints "foo".
42.11 - Statements
Statements are the executable instructions performed by the program. Statements produce values and control program flow. A group of statements enclosed in braces makes up a block. Any valid expression or declaration terminated by a semicolon is considered a statement. The statements that control program flow are described in further HELP frames. See also HELP CC LANGUAGE_TOPICS DECLARATION and HELP CC LANGUAGE_TOPICS PREPROCESSOR.
42. 11.1 - break
The break statement terminates the immediately enclosing while, do, for, or switch statement. Control passes to the statement following the terminated statement. Syntax: break ;
42. 11.2 - continue
The continue statement passes control to the test portion of the immediately enclosing while, do, or for statement. Syntax: continue ; In each of the following statements, a continue statement is equivalent to "goto label;": while (expression) { statement ... label: ; } do { statement ... label: ; } while (expression); for (expression; expression; expression) { statement ... label: ; } The continue statement is not intended for switches. A continue statement inside a switch statement inside a loop causes reiteration of the loop.
42. 11.3 - do
The do statement executes a statement one or more times, as long as a stated condition expression is true. Syntax: do statement while ( expression ) ; The do statement is executed at least once. The expression is evaluated after each execution of the statement. If the expression is not 0, the statement is executed again. The statement following the do statement (the body of the do statement) is not optional; the null statement (a lone semicolon) is provided for specifying a do statement with an empty body.
42. 11.4 - for
The for statement executes a statement zero or more times, with three specified control expressions. Expression-1 is evaluated only once, before the first iteration; expression-2 is evaluated before every iteration; expression-3 is evaluated after every iteration. The for loop terminates if, on evaluation, expression-2 is 0. Syntax: for ( [expression-1] ; [expression-2] ; [expression-3] ) statement The for statement is equivalent to the following format: expression-1; while ( expression-2 ) { statement expression-3; } You can omit any of the three expressions. If expression-2 is omitted, the while condition is true.
42. 11.5 - goto
The goto statement transfers control unconditionally to a labeled statement. Syntax: goto identifier ; The identifier must be a label located in the current function. You may use goto to branch into a block, but no initializations are performed on variables declared in the block.
42. 11.6 - if
The if statement is a conditional statement. It can be written with or without an else clause as follows: if ( expression ) statement if ( expression ) statement else statement In both cases, the expression is evaluated, and if it is not 0, the first statement is executed. If the else clause is included and the expression is 0, the statement following else is executed instead. In a series of if-else clauses, the else matches the most recent else-less if.
42. 11.7 - Labeled
Any statement can be preceded by a label prefix of the following form: identifier: This declares the identifier as a label. The scope of such a declaration is the current function. Labels are used only as the targets of goto statements.
42. 11.8 - Null
A null statement is a semicolon: ; The null statement provides a null action -- for example, the body of a for loop that takes no action: for(i=0; i < ARRAYSIZE && x[i] == 5; i++) ;
42. 11.9 - return
The return statement causes a return from a function, with or without a return value. Syntax: return ; return expression ; The return value is undefined if not specified in a return statement. If an expression is specified in the return statement, it is evaluated and the value is returned to the calling function; the value is converted, if necessary, to the type with which the called function was declared. If a function does not have a return statement, the effect (on reaching the end of the function) is the same as with a return statement that does not specify an expression. Functions declared as void may not contain return statements specifying an expression.
42. 11.10 - switch
The switch statement executes one or more of a series of cases, based on the value of an integer expression. Syntax: switch ( expression ) body The switch's body typically is a block, within which any statement can be prefixed with one or more case labels as follows: case constant-expression : At most one statement in the body may have the label as follows: default : The switch expression is evaluated and compared to the cases. If there is a case matching the expression's value, it is executed; if not, the default case is executed. The switch is normally terminated by a break, return, or goto statement in one of the cases. If there is no matching case and no default, the body of the switch statement is skipped.
42. 11.11 - while
The while statement executes a statement 0 or more times, as long as a stated condition is true. Syntax: while ( expression ) statement The expression is evaluated before each execution, and the statement is executed if the expression is not 0. The statement following the parentheses (the body of the while statement) is not optional; the null statement (a lone semicolon) is provided for specifying a while statement with an empty body.
42.12 - Storage Classes
The storage class of a variable determines when its storage is allocated, whether its contents are preserved across different blocks or functions, and what link-time scope the variable has. Auto variables are allocated at run time. They are not preserved across functions. Auto is the default storage class for variables declared within a function. Extern variables are allocated at compile time. They are preserved across functions. There can be only 65,532 extern variables per program. Extern is the default storage class for variables declared outside a function. Globaldef, globalref, and globalvalue variables are allocated at compile time. They are preserved across functions. The number of global symbols is unlimited. Register variables are allocated at run time. They cannot be referenced from other separately compiled functions. Static variables are allocated at compile time. If externally declared, they retain their values across functions. If internally declared (inside of a function), they cannot be referenced from other functions; if control passes from the defining function, to other functions, and then passed back to the defining function, the variable retains its previous value and is not reinitialized.
42.13 - Type Qualifiers
Data-type qualifiers affect the allocation or access of data storage. The data-type qualifiers are const, volatile, and __restrict.
42. 13.1 - const
The const data-type qualifier restricts access to stored data. If you declare an object to be of type const, you cannot modify that object. You can use the const data-type qualifier with the volatile data-type qualifier or with any of the storage-class specifiers or modifiers. The following example declares the variable x to be a constant integer: int const x;
42. 13.2 - volatile
The volatile data-type qualifier prevents an object from being stored in a machine register, forcing it to be allocated in memory. This data-type qualifier is useful for declaring data that is to be accessed asynchronously. A device driver application often uses volatile data storage. Like const, you can specify the volatile data-type qualifier with any of the storage-class specifiers or modifiers with the exception of the register storage class.
42. 13.3 - __restrict
The __restrict data-type qualifier is used to designate a pointer as pointing to a distinct object, thus allowing compiler optimizations to be made.
42.14 - Storage Class Modifiers
The storage-class modifiers allow individual attributes of a variable to change without changing the other default attributes connected with a given storage class. Storage-class keywords and storage-class modifiers can be specified in either order. Syntax: modifier storage_class_keyword identifier; If you specify a storage-class modifier but not a storage class keyword, the storage class defaults to extern.
42. 14.1 - noshare
Noshare variables are assigned the PSECT attribute NOSHR. Noshare variables may not be shared between processes. This modifier is used when linking variables that are not to be shared within a shareable image. You can use the noshare modifier with the storage-class keywords static, [extern], globaldef, and globaldef{"name"}.
42. 14.2 - readonly
Readonly variables are assigned the PSECT attribute NOWRT and are stored in the PSECT $CODE, which is a nonwritable data area. Other programs can access the PSECT directly, but none of the information can be overwritten. You can use the readonly modifier with the storage-class keywords [extern], static, globaldef, and globaldef{"name"}. You can use both the readonly and noshare modifiers with the [extern] and the globaldef{"name"} specifiers. If you use both modifiers with either the static or the globaldef specifiers, the compiler ignores noshare and accepts readonly.
42. 14.3 - _align
The _align modifier allows you to align objects of any of the Compaq C data types on a specified storage boundary. Use the _align modifier in a data declaration or definition. When specifying the boundary of the data alignment, you can use a predefined constant: BYTE or byte, WORD or word, LONGWORD or longword, QUADWORD or quadword, OCTAWORD or octaword, and PAGE or page. You can also specify an integer value that is a power of two. The power of two tells Compaq C the number of bytes to pad in order to align the data: For OpenVMS VAX systems, specify a constant 0, 1, 2, 3, 4, or 9. For OpenVMS Alpha systems, specify any constant from 0 to 16.
42. 14.4 - __align
The __align storage-class modifier has the same semantic meaning as the _align keyword. The difference is that __align is a keyword in all compiler modes while _align is a keyword only in modes that recognize VAX C keywords. For new programs, using __align is recommended.
42. 14.5 - __forceinline
Similar to the __inline storage-class modifier, the __forceinline storage-class modifier marks a function for inline expansion. However, using __forceinline on a function definition and prototype tells the compiler that it must substitute the code within the function definition for every call to that function. (With __inline, such substitution occurs at the discretion of the compiler.) Syntax: __forceinline [type] function_definition
42. 14.6 - __inline
The __inline modifier marks a function for inline expansion. Using __inline on a function definition and prototype tells the compiler that it can substitute the code within the function definition for every call to that function. Substitution occurs at the discretion of the compiler. The __inline storage-class specifier has the same effect as the #pragma inline preprocessor directive, except that the latter attempts to provide inline expansion for all functions in a translation unit, rather than for selected functions. Syntax: __inline [type] function_definition
42. 14.7 - inline
Similar to the __inline storage-class modifier, the inline storage-class modifier can be used as a declaration specifier in the declaration of a function. This modifier is supported in relaxed ANSI C mode (/STANDARD=RELAXED_ANSI89) or if the /ACCEPT=C99_KEYWORDS or /ACCEPT=GCCINLINE qualifier is specified. With static functions, inline has the same effect as applying __inline or #pragma inline to the function. However, when inline is applied to a function with external linkage, besides allowing calls within that translation unit to be inlined, the inline semantics provide additional rules that also allow calls to the function to be inlined in other translation units or for the function to be called as an external function, at the compiler's discretion: o If the inline keyword is used on a function declaration with external linkage, then the function must also be defined in the same translation unit. o If all of the file scope declarations of the function use the inline keyword but do not use the extern keyword, then the definition in that translation unit is called an inline definition, and no externally-callable definition is produced by that compilation unit. Otherwise, the compilation unit does produce an externally-callable definition. o An inline definition must not contain a definition of a modifiable object with static storage duration, and it must not refer to an identifier with internal linkage. These restrictions do not apply to the externally-callable definition. o As usual, at most one compilation unit in an entire program can supply an externally-callable definition of a given function. o Any call to a function with external linkage may be translated as a call to an external function, regardless of the presence of the inline qualifier. It follows from this and the previous point that any function with external linkage that is called must have exactly one externally-callable definition among all the compilation units of an entire program. o The address of an inline function with external linkage is always computed as the address of the unique externally-callable definition, never the address of an inline definition. o A call to inline function made through a pointer to the externally-callable definition may still be inlined or translated as a call to an inline definition, if the compiler can determine the name of the function whose address was stored in the pointer. 2 Link_libraries Both the VAX C RTL and the Compaq C RTL can coexist on your OpenVMS VAX system. The VAX C RTL supports existing VAX C applications. The Compaq C RTL supports ANSI-compliant Compaq C and Compaq C++, as well as other components of the OpenVMS environment. In addition, the Compaq C RTL provides a mechanism for thread safety, performance improvements, and problem fixes. Applications developed with VAX C will continue to use the VAX C RTL. However, VAX C applications can be relinked to use the Compaq C RTL instead. This lets you take advantage of the new features of the Compaq C RTL and solve potential interoperability problems in complex applications that incorporate both the VAX C and and the Compaq C RTLs. Existing applications that are relinked to use the Compaq C RTL should be carefully tested for possible problems resulting from the differences in behavior between the VAX C RTL and the Compaq C RTL. See the applicable Compaq C release notes and OpenVMS release notes for additional detail. Most linking needs should be satisfied by using the Compaq C RTL shareable image DECC$SHR.EXE in the SYS$LIBRARY directory. Use this linking method for programs that are written entirely in Compaq C or Compaq C++ code; that is, with no VAX C object modules. 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 Compaq 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 Compaq 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 For a description of additional ways to link to the Compaq C RTL, see the Compaq C Run-Time Library Reference Manual for OpenVMS Systems.
43 - Run-time functions |
Note: You might have a newer version of Compaq C that has header files and documentation for functions that are not supported on your older OpenVMS system. For example, if your target operating system platform is OpenVMS Version 7.2, you cannot use Compaq C RTL functions that are introduced on OpenVMS Version 7.3, even though they are documented in this help and in the Compaq C RTL Reference manual. See Appendix of the Compaq C Run-Time Library Reference Manual for a series of tables that list what DEC C RTL functions are supported on recent OpenVMS versions. This is helpful for determining the functions to avoid using on your target OpenVMS platforms. In the Curses Screen Management Package, there are pairs of functions and macros with equivalent functionality. Many Curses functions and macros are expressed as follows: [w]addch [no]echo The descriptions of the addch macro and the waddch function are found under the heading, [w]addch. The descriptions of the macros echo and noecho are found under the heading, [no]echo. For more information about Curses Screen management functions and macros, see HELP CC RUN-TIME_FUNCTIONS CURSES and HELP CC LINK_LIBRARIES. All other library functions are listed alphabetically under separate headings. All library functions are reentrant unless explicitly stated otherwise.
43.1 - abort
Sends the signal SIGABRT that terminates the process. Syntax: #include <stdlib.h> void abort(void);
43.2 - abs
Returns the absolute value of an integer. Syntax: #include <stdlib.h> int abs(int integer);
43.3 - access
Checks a file to see if a specified access mode is allowed. Syntax: #include <unistd.h> int access(const char *file_spec, int mode); The mode is interpreted as follows: F_OK -- Test to see if the file exists X_OK -- Execute W_OK -- Write (implies delete access) R_OK -- Read
43.4 - acos
Returns a value in the range 0 to pi, which is the arc cosine of its radian argument. Syntax: #include <math.h> double acos(double x);
43.5 - [w]addch
Curses Screen Management function and macro that add the character ch to the window at the current position of the cursor. The addch macro operates on the stdscr window. Syntax: #include <curses.h> int addch(char ch); int waddch(WINDOW *win, char ch);
43.6 - [w]addstr
Curses Screen management function and macro that add the string pointed to by str to the window at the current position of the cursor. The addstr macro operates on the stdscr window. Syntax: #include <curses.h> int addstr(char *str); int waddstr(WINDOW *win, char *str);
43.7 - alarm
Sends the signal SIGALRM to the invoking process after the number of seconds indicated by its argument has elapsed. This function is nonreentrant. Syntax: #include <unistd.h> unsigned int alarm(unsigned int seconds); (POSIX-1) int alarm(unsigned int seconds); (Compatibility)
43.8 - asctime, asctime_r
Converts a broken-down time into a 26-character string in the following form: Sun Sep 16 01:03:52 1984\n\0 All fields have a constant width. asctime_r puts the result into a user-specified buffer. asctime puts the result into thread-specific static memory allocated by the Compaq C RTL, which can be overwritten by subsequent calls to ctime or asctime; you must make a copy if you want to save it. Syntax: #include <time.h> char *asctime(const struct tm *timeptr); char *asctime_r(const struct tm *timeptr, char *buffer); [posix1]
43.9 - asin
Returns a value in the range -pi/2 to pi/2, which is the arc sine of its radian argument. Syntax: #include <math.h> double asin(double x);
43.10 - assert
Used to implement run-time diagnostics in programs. Syntax: #include <assert.h> void assert(int expression);
43.11 - atan
Returns a value in the range -pi/2 to pi/2, which is the arc tangent of its radian argument. Syntax: #include <math.h> double atan(double x);
43.12 - atan2
Returns a value in the range -pi to pi, which is the arc tangent of x/y, where x and y are the two arguments. Syntax: #include <math.h> double atan2(double x, double y);
43.13 - atexit
Registers a function that is called without arguments at program termination. Syntax: #include <stdlib.h> int atexit(void (*func) (void));
43.14 - atof
Converts a character string to a double-precision number. The character string has the following form: [white-spaces][+|-]digits[radix-character][digits][e|E[+|-]integer] Where radix-character is defined in the current locale. The first unrecognized character ends the conversion. The string is interpreted by the same rules that are used to interpret floating constants. Syntax: #include <stdlib.h> double atof(const char *nptr);
43.15 - atoi
Converts strings of ASCII characters to the appropriate numeric values. The ASCII string has the following form: [white-spaces][+|-]digits This function does not account for overflow resulting from the conversion. Syntax: #include <stdlib.h> int atoi(const char *nptr);
43.16 - atol
Converts strings of ASCII characters to the appropriate numeric values. The ASCII string has the following form: [white-spaces][+|-]digits The function does not account for overflow resulting from the conversion. Syntax: #include <stdlib.h> long int atol(const char *nptr);
43.17 - basename
Returns the last component of a path name. Syntax: #include <libgen.h> char *basename (char *path);
43.18 - bcmp
Compares byte strings. Syntax: #include <strings.h> void bcmp (const void *string1, const void *string2, size_t length);
43.19 - bcopy
Copies byte strings. Syntax: #include <strings.h> void bcopy (const void *source, void *destination, size_t length);
43.20 - box
Curses Screen Management function that draws a box around the window using the character vert as the character for drawing the vertical lines of the rectangle, and hor for drawing the horizontal lines of the rectangle. Syntax: #include <curses.h> int box(WINDOW *win, char vert, char hor);
43.21 - brk
Determines the lowest virtual address that is not used with the program. Syntax: #include <stdlib.h> void *brk(unsigned long int addr);
43.22 - bsearch
Performs a binary search. It searches an array of sorted objects for a specified object. Syntax: #include <stdlib.h> void *bsearch (const void *key, const void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *));
43.23 - btowc
Converts one-byte multibyte character to a wide character in the initial shift state. Syntax: #include <wchar.h> wint_t btowc (int c);
43.24 - bzero
Copies nulls into byte strings. Syntax: #include <strings.h> void bzero (void *string, size_t length);
43.25 - cabs
Computes the Euclidean distance between two points as the square root of their respective squares. This function returns sqrt(x*x + y*y). Syntax: #include <math.h> double cabs(cabs_t z);
43.26 - calloc
Allocates an area of zeroed memory. This function is AST-reentrant. Syntax: #include <stdlib.h> void *calloc(size_t number, size_t size);
43.27 - catclose
Closes a message catalog. Syntax: #include <nl_types.h> int catclose (nl_catd catd);
43.28 - catgets
Retrieves a message from a message catalog. The message identified by set_id and msg_id, in the message catalog catd, is retrieved The message is stored in a message buffer in the nl_catd structure which is overwritten by subsequent calls to catgets. If a message string needs to be preserved, it should be copied to another location by the program. Syntax: #include <nl_types.h> char *catgets (nl_catd catd, int set_id, int msg_id, const char *s);
43.29 - catopen
Opens a message catalog. Syntax: #include <nl_types.h> nl_catd catopen (const char *name, int oflag);
43.30 - ceil
Returns (as a double) the smallest integer that is greater than or equal to its argument. Syntax: #include <math.h> double ceil(double x);
43.31 - cfree
Makes available for reallocation the area allocated by a previous calloc, malloc, or realloc call. This function is AST-reentrant. Syntax: #include <stdlib.h> void cfree(void *pointer);
43.32 - chdir
Changes the default directory. Syntax: #include <unistd.h> int chdir(const char *dir_spec); (POSIX-1) int chdir(const char *dir_spec, ...); (Compaq C Extension) where the ... is an optional flag, available in all compilation modes except strict ANSI C mode (/STANDARD=ANSI89). This flag is significant only when calling chdir from USER mode. If the value of the flag is 1, the new directory is effective across images. If the value is not 1, the original default directory is restored when the image exits.
43.33 - chmod
Changes the file protection of a file. Syntax: #include <stat.h> int chmod(const char *file_spec, mode_t mode);
43.34 - chown
Changes the owner UIC of a file. Syntax: #include <unistd.h> int chown(const char *file_spec, uid_t owner, gid_t group); (POSIX-1) int chown(const char *file_spec, unsigned int owner, unsigned int group); (Compatibility)
43.35 - [w]clear
Curses Screen Management function and macro that erase the contents of the specified window and reset the cursor to coordinates (0,0). The clear macro acts on the stdscr window. Syntax: #include <curses.h> int clear(); int wclear(WINDOW *win);
43.36 - clearerr
Resets the error and end-of-file indicators for a file (so that ferror and feof will not return a nonzero value). Syntax: #include <stdio.h> void clearerr(FILE *file_pointer);
43.37 - clearok
Sets the clear flag for the window. Syntax: #include <curses.h> clearok(WINDOW *win, bool boolf);
43.38 - clock
Determines the amount of CPU time (in 10-millisecond units) used since the beginning of program execution. The time reported is the sum of the user and system times of the calling process and any terminated child processes for which the calling process has executed wait or system. This function is nonreentrant. Syntax: #include <time.h> clock_t clock(void);
43.39 - close
Closes the file associated with a file descriptor. Syntax: #include <unistd.h> int close(int file_descriptor);
43.40 - closedir
Closes directories. Syntax: #include <dirent.h> int closedir (DIR *dir_pointer);
43.41 - [w]clrattr
Curses Screen Management function and macro that deactivate the video display attributes boldface, blinking, reverse video, and underlining within a specified window on the terminal screen. The attributes are represented by _BOLD, _BLINK, _REVERSE, and _UNDERLINE. The clrattr macro operates on the stdscr window. Syntax: #include <curses.h> int clrattr(int attr); int wclrattr(WINDOW *win, int attr);
43.42 - [w]clrtobot
Curses Screen Management function and macro that erase the contents of the window from the current position of the cursor to the bottom of the window. The clrtobot macro acts on the stdscr window. Syntax: #include <curses.h> int clrtobot(); int wclrtobot(WINDOW *win);
43.43 - [w]clrtoeol
Curses Screen Management function and macro that erase the contents of the window from the current cursor position to the end of the line on the specified window. The clrtoeol macro acts on the stdscr window. Syntax: #include <curses.h> int clrtoeol(); int wclrtoeol(WINDOW *win);
43.44 - confstr
Determines the current value of a specified system variable defined by a string value. Syntax: #include <unisted.h> size_t confstr (int name, char *buf, size_t len);
43.45 - cos
Returns the cosine of its radian argument. Syntax: #include <math.h> double cos(double x);
43.46 - cosh
Returns the hyperbolic cosine of its argument. Syntax: #include <math.h> double cosh(double x);
43.47 - cot
Returns the cotangent of its radian argument. Syntax: #include <math.h> double cot(double x);
43.48 - creat
Creates a new file. Syntax: #include <fcntl.h> int creat(const char *file_spec, mode_t mode); (POSIX-1) int creat(const char *file_spec, mode_t mode,...); (Compaq C Extension) where the ... is an optional argument list of character strings of the following form: "keyword = value",...,"keyword = value" Or in the case of "acc" or "err", this form: "keyword" The keyword is an RMS field in the file access block (FAB) or record access block (RAB), and the value is valid for assignment to that field. Some fields permit you to specify more than one value. In these cases, the values are separated by commas.
43.49 - [no]crmode
Curses Screen Management macros that set and unset the terminal from cbreak mode. This mode of single-character input is only supported with the Curses input routine getch. Syntax: #include <curses.h> crmode() nocrmode()
43.50 - ctermid
Returns a character string giving the equivalence string of SYS$COMMAND. This is the name of the controlling terminal. This function is nonreentrant. Syntax: #include <unistd.h> char *ctermid(char *str);
43.51 - ctime, ctime_r
Converts a time, in seconds, to the following form: Sun Sep 16 01:03:52 1984\n\0 All fields have a constant width. ctime_r puts the result into a user-specified buffer. ctime puts the result into thread-specific static memory allocated by the Compaq C RTL, which can be overwritten by subsequent calls to ctime or asctime; you must make a copy if you want to save it. Syntax: #include <time.h> char *ctime(const time_t *bintim); char *ctime_r(const time_t *bintim, char *buffer); [posix1]
43.52 - Curses
Curses, the Compaq C Screen Management Package, is comprised of RTL functions that create and modify defined sections of the terminal screen, and optimize cursor movement. Using a screen management package, you can develop a user interface that is both visually attractive and easy to use. Curses allows you to manipulate the screen without worrying about the intricacies of various types of terminals, the difficulties of moving data to and from sections of the screen, or the problems of efficient cursor movement. Using Curses, the terminal screen may be divided into a number of rectangular regions called windows. The size and location of each window is given in terms of the number of lines, the number of columns, and the starting position -- the upper left corner of the window. A window must fit completely on the terminal screen, being as small as a single character or as large as the entire terminal screen. When modifying windows, changes will not appear on the terminal screen until the window is refreshed. When a window is refreshed, the updated window is placed onto the terminal screen leaving the rest of the terminal screen unaltered.
43.53 - cuserid
Returns a pointer to a character string containing the name of the user initiating the current process. This function is nonreentrant. Syntax: #include <unistd.h> char *cuserid(char *str);
43.54 - DECC$CRTL_INIT
Allows you to call the Compaq C RTL from other languages. It initializes the run-time environment and establishes both an exit and condition handler. VAXC$CRTL_INIT is a synonym for DECC$CRTL_INIT. Either name invokes the same routine. Syntax: #include <signal.h> void DECC$CRTL_INIT(void);
43.55 - decc$fix_time
Converts OpenVMS binary system times to UNIX binary times. Syntax: #include <unixlib.h> unsigned int decc$fix_time(void *vms_time);
43.56 - decc$from_vms
Converts OpenVMS file specifications to UNIX style file specifications. Syntax: #include <unixlib.h> int decc$from_vms(const char *vms_filespec, int action_routine, int wild_flag);
43.57 - decc$match_wild
Matches a string to a pattern. Syntax: #include <unixlib.h> int decc$match_wild(char *test_string, char *string_pattern);
43.58 - decc$to_vms
Converts UNIX style file specifications to OpenVMS file specifications. Syntax: #include <unixlib.h> int decc$to_vms(const char *unix_style_filespec, int (*action_rtn)(char *unix_style_filespec, int type_of_file), int allow_wild, int no_directory);
43.59 - decc$record_read
Provides additional flexibility in manipulating and observing RMS structures on a per-read basis. This function is inherently specific to OpenVMS systems and should not be used when writing portable applications. Syntax: #include <stdio.h> int decc$record_read(FILE *fp, void *buffer, int nbytes);
43.60 - decc$record_write
Provides additional flexibility in manipulating and observing RMS structures on a per-write basis. Syntax: #include <stdio.h> int decc$record_write(FILE *fp, void *buffer, int nbytes);
43.61 - decc$set_child_standard_streams
For a child spawned by a function from the exec family of functions, associates specified file descriptors with a child's standard streams: stdin, stdout, and stderr. Syntax: #include <unistd.h> int decc$set_child_standard_streams(int fd1, int fd2, int fd3);
43.62 - decc$set_reentrancy
Controls the type of reentrancy that reentrant Compaq C RTL routines will exhibit. Syntax: #include <reentrancy.h> int decc$set_reentrancy(int type); Use one of the following values for type: o C$C_AST (AST) Uses the _BBSSI builtin to perform simple locking around critical sections of RTL code, and it may additionally disable asynchronous system traps (AST)s in locked regions of code. This type of locking should be used when AST code contains calls to Compaq C RTL I/O routines. o C$C_MULTITHREAD (multithread) Designed to be used in conjunction with the DECthreads product. It performs DECthreads locking and never disables ASTs. DECthreads must be available on your system to use this form of reentrancy. o C$C_TOLERANT (tolerant) Uses the _BBSSI 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. TOLERANT is the default reentrancy type. o C$C_NONE (none) Gives optimal performance in the Compaq C 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 Compaq C RTL.
43.63 - decc$translate_vms
Translates OpenVMS file specifications to UNIX style file specifications. Syntax: #include <unixlib.h> char *decc$translate_vms(const char *vms_filespec);
43.64 - decc$validate_wchar
Validates its argument as a valid wide character in the current program's locale. Syntax: #include <wchar.h> int decc$validate_wchar(wchar_t wc);
43.65 - decc$write_eof_to_mbx
Writes an end-of-file message to the mailbox. Syntax: #include <unistd.h> int decc$write_eof_to_mbx(int fd);
43.66 - [w]delch
Curses Screen Management function and macro that delete the character on the specified window at the current position of the cursor. The delch macro operates on the stdscr window. Syntax: #include <curses.h> int delch(); int wdelch(WINDOW *win);
43.67 - delete
Deletes a file. Syntax: #include <unixio.h> int delete(const char *file_spec);
43.68 - [w]deleteln
Curses Screen Management function and macro that delete the line at the current position of the cursor. The deleteln macro acts on the stdscr window. Syntax: #include <curses.h> int deleteln(); int wdeleteln(WINDOW *win);
43.69 - delwin
Deletes the specified window from memory. Syntax: #include <curses.h> int delwin(WINDOW *win);
43.70 - difftime
Computes the difference, in seconds, between the two times specified by the time1 and time2 arguments. Syntax: #include <time.h> double difftime (time_t time2, time_t time_1);
43.71 - dirname
Reports the parent directory name of a file path name. Syntax: #include <libgen.h> char *dirname (char *path);
43.72 - div
Returns the quotient and remainder after the division of its arguments. Syntax: #include <stdlib.h> div_t div(int numer, int denom);
43.73 - dlclose
deallocates the address space allocated by the Compaq C RTL for the handle. There is no way on OpenVMS systems to "unload" a shareable image that was dynamically loaded by the LIB$FIND_IMAGE_SYMBOL routine, which is the routine called by the dlsym function. In other words, there is no way on OpenVMS systems to release the address space occupied by the shareable image brought into memory by dlsym. Syntax: #include <stdio.h> void dlclose(void *handle);
43.74 - derror
Returns a string describing the last error that occurred from a call to dlopen, dlclose, or dlsym. Syntax: #include <stdio.h> char *dlerror(void);
43.75 - dlopen
Provides an interface to the dynamic library loader to allow shareable images to be loaded and called at run time. The dlopen function does not load a shareable image but rather saves its pathname argument for subsequent use by the dlsym function, which actually loads the shareable image through a call to LIB$FIND_IMAGE_SYMBOL. Syntax: #include <stdio.h> void *dlopen(char *pathname, int mode);
43.76 - dlsym
Returns the address of the symbol name found in a shareable image. If the symbol is not found, a NULL pointer is returned. Syntax: #include <stdio.h> void *dlsym(void *handle, char *name);
43.77 - drand48
Generate uniformly distributed pseudorandom number sequences. Returns 48-bit, nonnegative, double-precision floating-point values. Syntax: #include <stdlib.h> double drand48 (void);
43.78 - dup
Allocates a new file descriptor that refers to a file specified by a file descriptor returned by open, creat, or pipe. Syntax: #include <unistd.h> int dup(int file_desc1);
43.79 - dup2
Makes file_descriptor_2 point to the same file as file_descriptor_1. Syntax: #include <unixio.h> int dup2(int file_descriptor_1, int file_descriptor_2);
43.80 - [no]echo
Curses Screen Management macros that set the terminal so that characters may or may not be echoed on the terminal screen. This mode of single-character input is only supported with Curses. Syntax: #include <curses.h> echo() noecho()
43.81 - ecvt
Converts its value argument to a null-terminated string of ASCII digits and returns the address of the string. The string is stored in a memory location created by the function. Syntax: #include <stdlib.h> char *ecvt(double value, int ndigit, int *decpt, int *sign);
43.82 - endwin
Curses Screen Management function that clears the terminal screen and frees any virtual memory allocated to Curses data structures. Syntax: #include <curses.h> void endwin(void);
43.83 - erand48
Generate uniformly distributed pseudorandom number sequences. Returns 48-bit nonnegative, double-precision, floating-point values. Syntax: #include <stdlib.h> double erand48 (unsigned short int xsubi[3]);
43.84 - [w]erase
Curses Screen Management function and macro that erase the window by painting it with blanks. The erase macro acts on the stdscr window. Syntax: #include <curses.h> int erase(); int werase(WINDOW *win);
43.85 - execl
Passes the name of an image to be activated on a child process. This function is nonreentrant. Syntax: #include <unistd.h> int execl (const char *file-spec, const char *arg0,..., (char *)0; (POSIX-1) int execl (char *file-spec,...); (Compatibility) where the ... is a sequence of pointers to strings. At least one pointer must exist to terminate the list. This pointer must be the null pointer.
43.86 - execle
Passes the name of an image to be activated on a child process. This function is nonreentrant. Syntax: #include <unistd.h> int execle (char *file-spec, char *argn,..., (char *)0, char *envp[]); (POSIX-1) int execle (char *file-spec,...); (Compatibility)
43.87 - execlp
Passes the name of an image to be activated on a child process. This function is nonreentrant. Syntax: #include <unistd.h> int execlp (const char *file-spec, const char *arg0,...,(char *)0); (POSIX-1) int execlp (char *file-spec,...); (Compatibility)
43.88 - execv
Passes the name of an image to be activated on a child process. This function is nonreentrant. Syntax: #include <unistd.h> int execv (char *file-spec, char *argv[]);
43.89 - execve
Passes the name of an image to be activated on a child process. This function is nonreentrant. Syntax: #include <unistd.h> int execve (const char *file-spec, char *argv[], char *envp[]);
43.90 - execvp
Passes the name of an image to be activated on a child process. This function is nonreentrant. Syntax: #include <unistd.h> int execvp (const char *file-spec, char *argv[]);
43.91 - exit, _exit
Terminate execution of the program from which they are called. These functions are nonreentrant. They are also identical; the _exit function is retained for reasons of compatibility with VAX C. The status argument corresponds with an errno value if exiting from a child process using vfork and/or an exec function, or with an OpenVMS condition value if exiting from a process invoked by DCL. The errno values are defined in the <errno.h> header file. A status value of 0 or EXIT_SUCCESS is translated to the OpenVMS SS$_NORMAL status code to return the OpenVMS success value. Any other status value is left the same. The status value is passed to the parent process. A status value of EXIT_FAILURE is translated to an error-level exit status. If the process was invoked by the DIGITAL Command Language (DCL), the status is interpreted by DCL and a message is displayed. If the process was a child process created using vfork or an exec function, then the child process is executed and control returns to the parent. The exit and _exit functions make use of the $EXIT system service. If your process is being invoked by the RUN command using any of the hibernation and scheduled wakeup qualifiers, the process might not correctly return to hibernation state when an exit or _exit call is made. Syntax: #include <stdlib.h> void exit(int status) #include <unistd.h> void _exit(int status);
43.92 - exp
Returns the base e raised to the power of the argument. Syntax: #include <math.h> double exp(double x);
43.93 - fabs
Returns the absolute value of a floating-point value. Syntax: #include <math.h> double fabs(double x);
43.94 - fchown
Changes the owner and group of a file. Syntax: #include <unistd.h> int fchown(int fildes, uid_t owner, gid_t group);
43.95 - fclose
Closes a file by flushing any buffers associated with the file control block and freeing the file control block and buffers previously associated with the file pointer. Syntax: #include <stdio.h> int fclose(FILE *file_pointer);
43.96 - fcntl
Performs controlling operations on an open file specified by the file_desc parameter. The values for the request parameter are defined in the <fcntl.h> header file. Syntax: #include <sys/types.h> #include <unistd.h> #include <fcntl.h> int fcntl(int file_desc, int request [, int file_desc2]);
43.97 - fcvt
Converts its value argument to a null-terminated string of ASCII digits and returns the address of the string. Syntax: #include <stdlib.h> char *fcvt(double value, int ndigit, int *decpt, int *sign);
43.98 - fdopen
Associates a file pointer with a file descriptor returned by an open, creat, dup, dup2, or pipe function. Syntax: #include <stdio.h> FILE *fdopen(int file_descriptor, char *a_mode);
43.99 - feof
Tests a file to see if the end-of-file has been reached. Syntax: #include <stdio.h> int feof(FILE *file_pointer);
43.100 - ferror
Returns a nonzero integer if an error occurred while reading or writing to a file. Syntax: #include <stdio.h> int ferror(FILE *file_pointer);
43.101 - fflush
Writes out any buffered information for the specified file. Syntax: #include <stdio.h> int fflush(FILE *file_pointer);
43.102 - ffs
Finds the index of the first bit in a string. Syntax: #include <strings.h> int ffs (int integer);
43.103 - fgetc
Returns the next character from a specified file. Syntax: #include <stdio.h> int fgetc(FILE *file_pointer);
43.104 - fgetname
Returns the file specification associated with a file pointer. Syntax: #include <stdio.h> char *fgetname(FILE *file_pointer, char *buffer,...); where the ... is an optional additional argument that can be either 1 or 0. If you specify 1, fgetname returns the file specification in OpenVMS format. If you specify 0, fgetname returns the file specification in UNIX style format. If this argument is omitted, fgetname returns the file name according to your current command language interpreter.
43.105 - fgetpos
Stores the current value of the file position indicator for the stream pointed to by the stream into the object pointed to by pos. Syntax: #include <stdio.h> int fgetpos(FILE *stream, fpos_t *pos);
43.106 - fgets
Reads a line from a specified file, up to one less than the specified maximum number of characters or up to and including the new-line character, whichever comes first. The string is stored in the argument str. Syntax: #include <stdio.h> char *fgets(char *str, int maxchar, FILE *file_ptr);
43.107 - fgetwc
Reads the next character from a specified file, and converts it to a wide-character code. Syntax: #include <wchar.h> wint_t fgetwc (FILE *file_ptr);
43.108 - fgetws
Reads a line of wide characters from a specified file. and stores them in an array pointed to by wstr. The function reads up to maxchar - 1 characters or until the newline character is encountered. The function terminates the line with a null wide character. Syntax: #include <wchar.h> wchar_t *fgetws (wchar_t *wstr, int maxchar, FILE *file_ptr);
43.109 - fileno
Returns the file descriptor associated with the specified file pointer. Syntax: #include <stdio.h> int fileno(FILE *file_pointer);
43.110 - floor
Returns (as a double) the largest integer that is less than or equal to its argument. Syntax: #include <math.h> double floor(double x);
43.111 - fmod
Computes the floating-point remainder of the first argument divided by the second. If the second argument is zero, the fuction returns zero. Syntax: #include <math.h> double fmod (double x, double y);
43.112 - fopen
Opens a file by returning the address of a FILE structure. Syntax: #include <stdio.h> FILE *fopen(const char *file_spec, const char *a_mode); (ANSI C) FILE *fopen(const char *file_spec, const char *a_mode ,...); (Compaq C Extension) where the ... represents optional file attribute arguments. The file attribute arguments are the same as those used in the creat function.
43.113 - fpathconf
Retrieves file implementation characteristics. Syntax: #include <unistd.h> long int fpathconf (int filedes, int name);
43.114 - fprintf
Performs formatted output to a specified file. Syntax: #include <stdio.h> int fprintf(FILE *file_pointer, const char *format_string,...); The ... represents optional expressions whose resultant types correspond to conversion specifications given in the format_string. If no conversion specifications are given, you can omit the output sources. Otherwise, the function calls must have exactly as many output sources as there are conversion specifications, and the conversion specifications must match the types of the output sources. Conversion specifications are matched to output sources in left-to-right order. The format string for the output of information can contain two kinds of items: o Ordinary characters, which are copied to the output. o Conversion specifications, each of which causes the conversion of a corresponding output source to a character string in a particular format. Conversion specifications are matched to output sources in left-to-right order. A conversion specification consists of a % (or a %n$), followed by one or more optional characters, and concluding with a conversion specifier.
43. 114.1 - Optional character
flags You can use the following flag characters, alone or in any combined order, to modify the conversion specification: ' Requests that a numeric conversion is formatted with the thousands separator character. Only the numbers to the left of the radix character are formatted with the separator character. The character used as a separator and the positioning of the separators are defined in the program's current locale. -(hyphen) Left-justifies the converted output source in its field. + Requests that an explicit sign be present on a signed conversion. If this flag is not specified, the result of a signed conversion begins with a sign only when a negative value is converted. space Prefixes a space to the result of a signed conversion, if the first character of the conversion is not a sign, or if the conversion results in no characters. If you specify both the space and the + flag, the space flag is ignored. # Requests an alternate form conversion. Depending on the conversion specified, different actions will occur. For the o (octal) conversion, the precision is increased to force the first digit to be a 0. For the x (or X) conversion, a nonzero result is prefixed with 0x (or 0X). For e, E, f, g, and G conversions, the result contains a decimal point even at the end of an integer value. For g and G conversions, trailing zeros are not trimmed. For other conversions, the effect of # is undefined. 0 Uses zeros rather than spaces to pad the field width for d, i, o, u, x, X, e, E, f, g, and G conversions. If both the 0 and the - flags are specified, then the 0 flag is ignored. For d, i, o, u, x, and X conversions, if a precision is specified, the 0 flag is ignored. For other conversions, the behavior of the 0 flag is undefined. field width The minimum field width can be designated by a decimal integer constant, or by an output source. To specify an output source, use an asterisk (*) or the sequence *n$, where n refers to the nth output source listed after the format specification. If the converted output source is wider than the minimum field, write it out. If the converted output source is narrower than the minimum width, pad it to make up the field width. Pad with spaces, by default. Pad with zeros if the 0 flag is specified; this does not mean that the width is an octal number. Padding is on the left by default, and on the right if a minus sign is specified. period (.) Separates the field width from the precision. precision The precision defines the minimum number of digits to appear for d, i, o, u, x, and X conversions; the number of digits to appear after the decimal-point character for e, E, and f conversions; the maximum number of significant digits for g and G conversions; or the maximum number of characters to be written from a string in an s or S conversion. If a precision appears with any other conversion specifier, the behavior is undefined. Precision can be designated by a decimal integer constant, or by an output source. To specify an output source, use an asterisk (*) or the sequence *n$, where n refers to the nth output source listed after the format specification. If only the period is specified, the precision is taken as 0. h, l, or L An h specifies that a following d, i, o, u, x, or X conversion specifier applies to a short int or unsigned short int argument; an h can also specify that a following n conversion specifier applies to a pointer to a short int argument. An l (lowercase ell) specifies that a following d, i, o, u, x, or X conversion specifier applies to a long int or unsigned long int argument; an l can also specify that a following n conversion specifier applies to a pointer to a long int argument. An L specifies that a following e, E, f, g, or G conversion specifier applies to a long double argument. If an h, l, or L appears with any other conversion specifier, the behavior is undefined. On Compaq C for OpenVMS VAX and Alpha Systems, int values are equivalent to long values.
43. 114.2 - Conversion Specifier
d, i Converts an int argument to signed decimal format. o Converts an unsigned int argument to unsigned octal format. u Converts an unsigned int argument to unsigned decimal format (giving a number in the range 0 to 4,294,967,295). x, X Converts an unsigned int argument to unsigned hexadecimal format (with or without a leading 0x). The letters 'abcdef' are used for the x conversion; the letters 'ABCDEF' are used for the X conversion. f Converts a float or double argument to the format [-]mmm.nnnnnn. The number of n's is equal to the precision specification. If no precision is specified, the default is 6. If the precision is 0 and the # flag is specified, the decimal point appears but no n's appear. If the precision is 0 and the # flag is not specified, the decimal point also does not appear. If a decimal point appears, at least one digit appears before it. The value is rounded to the appropriate number of digits. e, E Converts a float or double argument to the format [-]m.nnnnnnE[+|-]xx. The number of n's is specified by the precision. If no precision is specified, the default is 6. If the precision is explicitly 0 and the # flag is specified, the decimal point appears but no n's appear. If the precision is explicitly 0 and the # flag is not specified, the decimal point also does not appear. An 'e' is printed for e conversion; an 'E' is printed for E conversion. The exponent always contains at least two digits. If the value is 0, the exponent is 0. g, G Converts a float or double argument to format f or e (or E if the G conversion specifier is used), with the precision specifying the number of significant digits. If the precision is 0, it is taken as 1. The format used depends on the value of the argument: format e (or E) is used only if the exponent resulting from such a conversion is less than -4, or is greater than or equal to the precision; otherwise, format f is used. Trailing zeros are suppressed in the fractional portion of the result. A decimal point appears only if it is followed by a digit. c Converts an int argument to an unsigned char, and writes the resulting character (null characters are ignored). C Converts a wchar_t argument to an array of bytes representing the character, and writes the resulting character. If the field width is specified and the resulting character occupies fewer bytes than the field width, it will be padded to the given width with space characters. If the precision is specified, the behavior is undefined. s Requires an argument that is a pointer to an array of characters of type char. The argument is used to write characters until a null character is encountered or until the number of characters indicated by the precision specification is exhausted. If the precision specification is 0 or omitted, all characters up to a null are output. S Converts an array of wide-character codes to multibyte characters, and writes the multibyte characters. Requires an argument that is a pointer to an array of wide characters of type wchar_t. Characters are written until a null wide character is encountered or until the number of bytes indicated by the precision specification is exhausted. If the precision specification is omitted or is greater than the size of the array of converted bytes, the array of wide characters must be terminated by a null wide character. p Requires an argument that is a pointer to void. The value of the pointer is output as a hexadecimal character. n Requires an argument that is a pointer to an integer. The integer is assigned the number of characters written to the output stream so far by this call to the formatted output function. No argument is converted. % Writes out the percent symbol. No conversion is performed. The complete conversion specification would be %%.
43.115 - fputc
Writes a character to a specified file. Syntax: #include <stdio.h> int fputc(int character, FILE *file_pointer);
43.116 - fputs
Writes a character string to a file without copying the string's null terminator. Syntax: #include <stdio.h> int fputs(const char *string, FILE *file_pointer);
43.117 - fputwc
Converts a wide character to its corresponding multibyte value, returns the result, and writes the result to the specified file. Syntax: #include <wchar.h> wint_t fputwc (wint_t wc, FILE *file_ptr);
43.118 - fputws
Converts a wide-character string to a to a multibyte character string and writes it to the specified file. The function does not append a terminating null byte, corresponding to the null wide-character, to the output string. Syntax: #include <wchar.h> int fputws (const wchar_t *wstr, FILE *file_ptr);
43.119 - fread
Reads a specified number of items from a file. Syntax: #include <stdio.h> size_t fread(void *pointer, size_t size_of_item, size_t number_of_items, FILE *file_pointer);
43.120 - free
Makes available for reallocation the area allocated by a previous calloc, malloc, or realloc call. This function is AST-reentrant. Syntax: #include <stdlib.h> void free(void *pointer);
43.121 - freopen
Substitutes the file, named by a file specification, for the open file addressed by a file pointer. The latter file is closed. Syntax: #include <stdio.h> FILE *freopen(const char *file_spec, const char *access_mode, FILE *file_pointer,...); Where the ... represents optional file attribute arguments. The file attribute arguments are the same as those used in the creat function.
43.122 - frexp
Calculates the fractional and exponent parts of a double value. The fractional part is returned as the return value; the exponent is placed in the integer variable pointed to by eptr. Syntax: #include <math.h> double frexp(double value, int *eptr);
43.123 - fscanf
Performs formatted input from a specified file. Syntax: #include <stdio.h> fscanf(FILE *file_pointer, const char *format_string,...); The ... represents optional expressions that are pointers to objects whose results correspond to conversion specifications given in the format_string. If no conversion specifications are given, you can omit the input pointers. Otherwise, the function calls must have exactly as many input pointers as there are conversion specifications, and the conversion specifications must match the types of the input pointers. Conversion specifications are matched to input sources in left-to-right order. The format_string for the input of information can include three kinds of items: o White-space characters (spaces, tabs, and new-line characters), which match optional white-space characters in the input field. o Ordinary characters (not %), which must match the next nonwhite-space character in the input. o Conversion specifications, which govern the conversion of the characters in an input field and their assignment to an object indicated by a corresponding input pointer. A conversion specification consists of the following characters, in the order listed: o A percent character (%) or the sequence %n$ (where n is an integer). The sequence %n$ denotes that the conversion is applied to the nth input pointer listed, where n is a decimal integer between [1, NL_ARGMAX] (see the <limits.h> header file). For example, a conversion specification beginning %5$ means that the conversion will be applied to the 5th input pointer listed after the format specification. The sequence %$ is invalid. If the conversion specification does not begin with the sequence %n$ the conversion specification is matched to its input pointer in left-to-right order. You should only use one type of conversion specification (% or %n$) in a format specification. o One or more optional characters o A conversion specifier.
43. 123.1 - Optional character
* Assignment-suppressing character. field width Nonzero decimal integer that specifies the maximum field width. h, l, or L Precede a conversion specifier of d, i, or n with an h if the corresponding argument is a pointer to short int rather than a pointer to int, or with an l (lowercase ell) if it is a pointer to long int. Similarly, precede a conversion specifier of o, u, or x with an h if the corresponding argument is a pointer to unsigned short int rather than a pointer to unsigned int, or with an l (lowercase ell) if it is a pointer to unsigned long int. Finally, precede a conversion specifier of e, f, or g with an l (lowercase ell) if the corresponding argument is a pointer to double rather than a pointer to float, or with an L if it is a pointer to long double. If an h, l, or L appears with any other conversion specifier, the behavior is undefined.
43. 123.2 - Conversion Specifier
d Expects a decimal integer in the input whose format is the same as expected for the subject sequence of the strtol function with the value 10 for the base argument. The corresponding argument must be a pointer to int. i Expects an integer whose type is determined by the leading input characters. For example, a leading 0 is equated to octal, a leading 0X is equated to hexadecimal, and all other forms are equated to decimal. The corresponding argument must be a pointer to int. o Expects an octal integer in the input (with or without a leading 0). The corresponding argument must be a pointer to int. u Expects a decimal integer in the input whose format is the same as expected for the subject sequence of the strtoul function with the value 10 for the base argument. x Expects a hexadecimal integer in the input (with or without a leading 0x). The corresponding argument must be a pointer to unsigned int. c Expects a single byte in the input. The corresponding argument must be a pointer to char. If a field width precedes the c conversion specifier, the number of characters specified by the field width is read. In this case, the corresponding argument must be a pointer to an array of char. C Expects a multibyte character in the input which is converted into a wide character code. The corresponding argument must be a pointer to type wchar_t. If a field width precedes the C conversion specifier, the number of characters specified by the field width is read; in this case, the corresponding argument must be a pointer to array of wchar_t. s Expects a sequences of bytes in the input. The corresponding argument must be a pointer to an array of characters that is large enough to contain the sequence plus a terminating null character, which is added automatically. The input field is terminated by a space, tab, or new-line character. S Expects a sequence of multibyte characters in the input, which are converted to wide-character codes. The corresponding argument must be a pointer to an array of wide characters (type wchar_t) that is large enough to contain the sequence plus a terminating null wide-character code which is added automatically. The input field is terminated by a space, tab, or new-line character. e,f,g Expects a floating-point number in the input. The corresponding argument must be a pointer to float. The input format for floating-point numbers is: [+|-]nnn[radix][ddd][{E|e}[+|-]nn] The n's and d's are decimal digits (as many as indicated by the field width minus the signs and the letter E). The radix character is defined in the current locale. [...] Expects a nonempty sequence of characters that is not delimited by a white-space character. The brackets enclose a set of characters (the scanset) expected in the input sequence. Any character in the input sequence that does not match a character in the scanset terminates the character sequence. The corresponding argument must be a pointer to an array of characters. All characters between the brackets comprise the scanset, unless the first character after the left bracket is a circumflex (^). In this case, the scanset contains all characters other than those that appear between the circumflex and the right bracket; that is, any character that does appear between the circumflex and the right bracket will terminate the input character sequence. If the conversion specifier begins with [] or [^], the right-bracket character is in the scanset and the next right-bracket character is the matching right bracket that ends the specification; otherwise, the first right bracket character ends the specification. p An argument that is a pointer to void. The input value is interpreted as a hexadecimal value. n No input is consumed. The corresponding argument is a pointer to an integer. The integer is assigned the number of characters read from the input stream so far by this call to the formatted input function. Execution of a %n directive does not increment the assignment count returned when the formatted input function completes execution. % Matches a single percent symbol. No conversion or assignment takes place. The complete conversion specification would be %%.
43.124 - fseek
Positions the file to the specified byte offset in the file. Syntax: #include <stdio.h> int fseek(FILE *file_pointer, long int offset, int direction);
43.125 - fsetpos
Sets the file position indicator for the stream according to the value of the object pointed to by pos. Syntax: #include <stdio.h> int fsetpos (FILE *stream, const fpos_t *pos);
43.126 - fstat
Accesses information about the file descriptor or the file specification. Syntax: #include <stat.h> int fstat(int file_descriptor, struct stat *buffer);
43.127 - fsync
Flushes data all the way to the disk. Syntax: #include <unistd.h> int fsync(int file_descriptor);
43.128 - ftell
Returns the current byte offset to the specified file. Syntax: #include <stdio.h> long int ftell(FILE *file_pointer);
43.129 - ftime
Returns the time elasped since 00:00:00 January 1, 1970, in the structure pointed at by timeptr. Syntax: #include <timeb.h> int ftime(struct timeb *timeptr);
43.130 - ftruncate
Truncates a file to a specified length. Syntax: #include <unistd.h> int ftruncate (int filedes, off_t length);
43.131 - ftw
Walks a file tree. Syntax: #include <ftw.h> int ftw (const char *path, int(*function)(cont char *,const struct stat *,int) int depth);
43.132 - fwait
Is used to wait for I/O on a specific file to complete. Syntax: #include <stdio.h> int fwait(FILE *fp);
43.133 - fwide
Determines and sets the orientation of a stream. Syntax: #include <wchar.h> int fwide (FILE *stream, int mode);
43.134 - fwprintf
Prints formatted output to a stream based on specified arguments. Syntax: #include <wchar.h> int fwprintf (FILE *stream, const wchar_t *format, ...);
43.135 - fwrite
Writes a specified number of items to the file. Syntax: #include <stdio.h> size_t fwrite(const void *pointer, size_t size_of_item, size_t number_items, FILE *file_pointer);
43.136 - fwscanf
Performs formatted input from a stream based on specified arguments. Syntax: #include <wchar.h> int fwscanf (FILE *stream, const wchar_t *format, ...);
43.137 - gcvt
Converts its value argument to a null-terminated string of ASCII digits and returns the address of the string. The strings are stored in a memory location created by the function. Syntax: #include <stdlib.h> char *gcvt(double value, int ndigit, char *buf);
43.138 - getc
Returns characters from a specified file. Syntax: #include <stdio.h> int getc(FILE *file_pointer);
43.139 - [w]getch
Curses Screen Management function and macro that get a character from the terminal screen and echo it on the specified window. The getch macro echos the character on stdscr. Syntax: #include <curses.h> char getch(); char wgetch(WINDOW *win);
43.140 - getchar
Reads a single character from the standard input (stdin). Syntax: #include <stdio.h> int getchar(void);
43.141 - getclock
Gets current value of system-wide clock. Syntax: #include <timers.h> int getclock (int clktyp, struct timespec *tp);
43.142 - getcwd
Returns a pointer to the file specification for the current working directory. Syntax: #include <unistd.h> char *getcwd (char *buffer, size_t size); (POSIX-1) char *getcwd (char *buffer, unsigned int size,...); (Compaq C Extension) where the ... is an optional argument that can be either 1 or 0. If you specify 1, getcwd returns the directory specification in OpenVMS format. If you specify 0, getcwd returns the directory specification (path name) in UNIX style format. If you do not specify this argument, getcwd returns the file name according to your current command-language interpreter.
43.143 - getdtablesize
Gets the total number of file descriptors that a process can have open simultaneously. Syntax: #include <unistd.h> int getdtablesize (void);
43.144 - getegid
Returns, in OpenVMS terms, the group number from the user identification code (UIC). For example, if the UIC is [313,031], 313 is the group number. Syntax: #include <unistd.h> gid_t getegid(void);
43.145 - getenv
Searches the environment array for the current process and returns the value associated with the environment name. Syntax: #include <stdlib.h> char *getenv(const char *name);
43.146 - geteuid
Returns, in OpenVMS terms, the member number from the user identification code (UIC). For example, if the UIC is [313,031], 313 is the member number. Syntax: #include <unistd.h> uid_t geteuid(void)
43.147 - getgid
Returns, in OpenVMS terms, the group number from the user identification code (UIC). For example, if the UIC is [313,031], 313 is the group number. Syntax: #include <unistd.h> gid_t getgid(void);
43.148 - getitimer
Returns the value of interval timers. Syntax: #include <time.h> #define ITIMER_REAL 0 #define ITIMER_VIRTUAL 1 #define ITIMER_PROF 2 int getitimer (int which, struct itimerval *value);
43.149 - getlogin
Gets login name. Syntax: #include <unistd.h> char *getlogin (void);
43.150 - getname
Returns the file specification associated with a file descriptor. Syntax: #include <unixio.h> char *getname(int file_descriptor, char *buffer,...); where the ... is an optional argument that can be either 1 or 0. If you specify 1, getname returns the directory specification in OpenVMS format. If you specify 0, getname returns the directory specification (path name) in UNIX style format. If you do not specify this argument, getname returns the file name according to your current command-language interpreter.
43.151 - getopt
The getopt function is a command-line parser that can be used by applications that follow Utility Syntax Guidelines 3,4,5,6,7,9, and 10 in Section 10.2 of the XBD specification. The remaining guidelines are not addressed by getopt and are the responsibility of the application. Syntax: #include <unistd.h> (X/Open, POSIX-2) #include <stdio.h> (X/Open, POSIX-1) int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt;
43.152 - getpagesize
Gets the system page size. Syntax: #include <unistd.h> int getpagesize (void);
43.153 - getpid
Returns the process ID of the current process. Syntax: #include <unistd.h> pid_t getpid(void);
43.154 - getppid
Returns the parent process ID of the calling process. Syntax: #include <unistd.h> pid_t getppid (void);
43.155 - getpwnam
Accesses user name information in the user database. Syntax: #include <pwd.h> struct passwd *getpwnam (const char name);
43.156 - getpwuid
Accesses user ID information in the user database. Syntax: #include <pwd.h> struct passwd *getpwuid (uid_t uid);
43.157 - gets
Reads a line from the standard input (stdin). Syntax: #include <stdio.h> char *gets(char *string);
43.158 - [w]getstr
Curses Screen Management function and macro that get a string from the terminal screen, store it in the variable str, and echo it on the specified window. The getstr macro works on the stdscr window. Syntax: #include <curses.h> int getstr(char *str); int wgetstr(WINDOW *win, char *str);
43.159 - gettimeofday
Gets date and time. The tpz argument must be the NULL pointer. Otherwise, the argument is ignored. Syntax: #include <time.h> int gettimeofday (struct timeval *tp, void *tpz);
43.160 - getuid
Returns, in OpenVMS terms, the member number from the user identification code (UIC). For example, if the UIC is [313,031], 313 is the member number. Syntax: #include <unistd.h> uid_t getuid(void);
43.161 - getw
Returns characters from a specified file. Syntax: #include <stdio.h> int getw(FILE *file_pointer);
43.162 - getwc
Reads the next character from a specified file, and converts it to a wide-character code. Syntax: #include <wchar.h> wint_t getwc (FILE *file_ptr);
43.163 - getwchar
Reads a single wide character from the standard input (stdin). The getwchar function is identical to fgetwc(stdin). Syntax: #include <wchar.h> wint_t getwchar (void);
43.164 - getyx
Curses Screen Management function that puts the (y,x) coordinates of the current cursor position on win in the variables y and x. Syntax: #include <curses.h> getyx(WINDOW *win, int y, int x);
43.165 - gmtime, gmtime_r
Converts the time (in seconds since the Epoch) pointed to by timer into a broken-down time, expressed as Coordinated Universal Time (UTC). Note: The name of this function was originally defined to return the time expressed as GMT (Greenwich Mean Time); its definition was changed to reflect current technical standard terminology. gmtime_r puts the result into a user-specified buffer. gmtime puts the result into thread-specific static memory allocated by the Compaq C RTL, which can be overwritten by subsequent calls to gmtime; you must make a copy if you want to save it. Syntax: #include <time.h> struct tm *gmtime (const time_t *timer); struct tm *gmtime_r(const time_t *timer, struct tm *result); [posix1]
43.166 - gsignal
Generates a specified software signal. Generating a signal causes the action routine established by the signal, ssignal, or sigvec function to be invoked. Syntax: #include <signal.h> int gsignal(int sig [, int sigcode]);
43.167 - hypot
Returns the square root of the sum of two squares of two arguments. For example: sqrt(x*x + y*y). Syntax: #include <math.h> double hypot(double x, double y);
43.168 - iconv
Converts characters coded in one codeset into another codeset. Characters in the buffer pointed to by inbuf are converted to characters in another code set. The resulting characters are stored in the buffer pointed to by outbuf. The conversion type is specified by the conversion descriptor cd. This descriptor is returned from a successful call to iconv_open. If an invalid character is found in the input buffer, the conversion stops after the last successful conversion. The variable pointed to by inbytesleft is updated to reflect the number of bytes in the input buffer that are not converted. The variable pointed to by outbytesleft is updated to reflect the number of bytes available in the output buffer. Syntax: #include <iconv.h> size_t iconv (iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
43.169 - iconv_close
Deallocates a specified conversion descriptor and the resources allocated to it. Syntax: #include <iconv.h> int iconv_close (iconv_t cd);
43.170 - iconv_open
Allocates a conversion descriptor for a specified codeset conversion. Syntax: #include <iconv.h> iconv_t iconv_open (const char *tocode, const char *fromcode);
43.171 - [w]inch
Curses Screen Management function and macro that return the character at the current cursor position on the specified window without making changes to the window. The inch macro acts on the stdscr window. Syntax: #include <curses.h> char inch(); char winch(WINDOW *win);
43.172 - index
Search for a character in a string. Syntax: #include <strings.h> char *index (const char *s, int c);
43.173 - initscr
Curses Screen Management function that initializes the terminal-type data and all screen functions. You must call initscr before using any of the Curses functions or macros. Syntax: #include <curses.h> void initscr(void);
43.174 - initstate
Initializes, restarts, and changes random number generators. Syntax: #include <stdlib.h> char *initstate (unsigned int seed, char *state, int size);
43.175 - [w]insch
Curses Screen Management function and macro that insert the character ch at the current cursor position in the specified window. The insch macro acts on the stdscr window. Syntax: #include <curses.h> int insch(char ch); int winsch(WINDOW *win, char ch);
43.176 - [w]insertln
Curses Screen Management function and macro that insert a line above the line containing the current cusor position. The insertln macro acts on the stdscr window. Syntax: #include <curses.h> int insertln(); int winsertln(WINDOW *win);
43.177 - [w]insstr
Curses Screen Management function and macro that insert a string at the current cursor position on the specified window. The insstr macro acts on the stdscr window. Syntax: #include <curses.h> int insstr(char *str); int winsstr(WINDOW *win, char *str);
43.178 - isalnum
Returns a nonzero integer if its argument is classed as alphabetic or as a digit in the program's current locale. Otherwise, it returns 0. Syntax: #include <ctype.h> int isalnum(int character);
43.179 - isalpha
Returns a nonzero integer if its argument is classed as an alphabetic character in the program's current locale. Otherwise, it returns 0. Syntax: #include <ctype.h> int isalpha(int character);
43.180 - isapipe
Returns 1 if the specified file descriptor is associated with a pipe, and 0 if it is not. Syntax: #include <unixio.h> int isapipe(int file_descriptor);
43.181 - isascii
Returns a nonzero integer if its argument is any ASCII character. Otherwise, it returns 0. Syntax: #include <ctype.h> int isascii(int character);
43.182 - isatty
Returns 1 if the specified file descriptor is associated with a terminal, and 0 if it is not. Syntax: #include <unistd.h> int isatty(int file_descriptor);
43.183 - iscntrl
Returns a nonzero integer if its argument is classed as a control character in the program's current locale. Otherwise, it returns 0. Syntax: #include <ctype.h> int iscntrl(int character);
43.184 - isdigit
Returns a nonzero integer if its argument is classed as a digit in the program's current locale. Otherwise, it returns 0. Syntax: #include <ctype.h> int isdigit(int character);
43.185 - isgraph
Returns a nonzero integer if its argument is classed as a graphic character in the program's current locale. Otherwise, it returns 0. Syntax: #include <ctype.h> int isgraph(int character);
43.186 - islower
Returns a nonzero integer if its argument is classed as a lowercase character in the program's current locale. Otherwise, it returns 0. Syntax: #include <ctype.h> int islower(int character);
43.187 - isprint
Returns a nonzero integer if its argument is classed as a printing character in the program's current locale. Otherwise, it returns 0. Syntax: #include <ctype.h> int isprint(int character);
43.188 - ispunct
Returns a nonzero integer if its argument is classed as a punctuation character in the program's current locale. Otherwise, it returns 0. Syntax: #include <ctype.h> int ispunct(int character);
43.189 - isspace
Returns a nonzero integer if its argument is classed as a space character in the program's current locale. Otherwise, it returns 0. Syntax: #include <ctype.h> int isspace(int character);
43.190 - isupper
Returns a nonzero integer if its argument is classed as an uppercase character in the program's current locale. Otherwise, it returns 0. Syntax: #include <ctype.h> int isupper(int character);
43.191 - iswalnum
Returns a nonzero integer if its wide-character argument is classed as alphabetic or as a digit in the program's current locale. Otherwise, it returns 0. Syntax: #include <wchar.h> int iswalnum (wint_t wc);
43.192 - iswalpha
Returns a nonzero integer if its wide-character argument is classed as an alphabetic character in the program's current locale. Otherwise, it returns 0. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int iswalpha (wint_t wc);
43.193 - iswcntrl
Returns a nonzero integer if its wide-character argument is classed as a control character in the program's current locale. Otherwise, it returns 0. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int iswcntrl (wint_t wc);
43.194 - iswctype
Returns a nonzero integer if its wide-character argument has a specified property. Otherwise, it returns 0. The specified property (wc_prop) is set by calling the wctype routine. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int iswctype (wint_t wc, wctype_t wc_prop);
43.195 - iswdigit
Returns a nonzero integer if its wide-character argument is classed as a digit in the program's current locale. Otherwise, it returns 0. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int iswdigit (wint_t wc);
43.196 - iswgraph
Returns a nonzero integer if its wide-character argument is classed as a graphic character in the program's current locale. Otherwise, it returns 0. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int iswgraph (wint_t wc);
43.197 - iswprint
Returns a nonzero integer if its wide-character argument is classed as a printing character in the program's current locale. Otherwise, it returns 0. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int iswprint (wint_t wc);
43.198 - iswpunct
Returns a nonzero integer if its wide-character argument is classed as a punctuation character in the program's current locale. Otherwise, it returns 0. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int iswpunct (wint_t wc);
43.199 - iswspace
Returns a nonzero integer if its wide-character argument is classed as a space character in the program's current locale. Otherwise, it returns 0. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int iswspace (wint_t wc);
43.200 - iswupper
Returns a nonzero integer if its wide-character argument is classed as an upppercase character in the program's current locale. Otherwise, it returns 0. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int iswupper (wint_t wc);
43.201 - iswxdigit
Returns a nonzero integer if its wide-character argument is a hexadecimal digit (0 to 9, A to F, or a to f) in the program's current locale. Otherwise, it returns 0. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int iswxdigit (wint_t wc);
43.202 - isxdigit
Returns a nonzero integer if its argument is a hexadecimal digit (0 to 9, A to F, or a to f) in the program's current locale. Syntax: #include <ctype.h> int isxdigit(int character);
43.203 - jrand48
Generate uniformly distributed pseudorandom number sequences. Returns 48-bit signed, long integers. Syntax: #include <stdlib.h> long int jrand48 (unsigned short int xsubi[3]);
43.204 - kill
Sends a signal to a process specified by a process ID (PID). This function does not support the same functionality supported by UNIX* systems. This function is restricted to C and C++ programs that include the main() function. * UNIX is a trademark of The Open Group. Syntax: #include <signal.h> int kill(int pid, int sig);
43.205 - labs
Returns the absolute value of an integer as a long int. Syntax: #include <stdlib.h> long int labs(long int j);
43.206 - lcong48
Initializes a 48-bit uniformly distributed pseudorandom number sequences. Syntax: #include <stdlib.h> void lcong48 (unsigned short int param[7]);
43.207 - ldexp
Returns its first argument multiplied by 2 raised to the power of its second argument. Syntax: #include <math.h> double ldexp(double x, int e);
43.208 - ldiv
Returns the quotient and remainder after the division of its arguments. Syntax: #include <stdlib.h> ldiv_t ldiv(long int numer, long int denom);
43.209 - leaveok
Curses Screen Management macro that signals Curses to leave the cursor at the current coordinates after an update to the window. Syntax: #include <curses.h> leaveok(WINDOW *win, bool boolf);
43.210 - link
Creates a new link (directory entry) for an existing file. Syntax: #include <unistd.h> link(const char *path1, const char *path2);
43.211 - localeconv
Sets the members of a structure of type struct lconv with values appropriate for formatting numeric quantities according to the rules of the current locale. Syntax: #include <locale.h> struct lconv *localeconv(void);
43.212 - localtime, localtime_r
Converts a time (expressed as the number of seconds elapsed since 00:00:00, January 1, 1970) into hours, minutes, seconds, and so on. This function is nonreentrant. localtime_r puts the result into a user-specified tm structure. localtime stores the result into thread-specific static memory allocated by the Compaq C RTL, and which is overwritten by subsequent calls to localtime; you must make a copy if you want to save it. Syntax: #include <time.h> struct tm *localtime(const time_t *timer); struct tm *localtime_r(const time_t *timer, struct tm *result); [posix1]
43.213 - log
Returns the natural (base-e) logarithm of its argument. Syntax: #include <math.h> double log(double x);
43.214 - log10
Returns the base-10 logarithm of its argument. Syntax: #include <math.h> double log10(double x);
43.215 - longjmp
Provides a way to transfer control from a nested series of function invocations back to a predefined point without returning normally; that is, by not using a series of return statements. The longjmp function restores the context of the environment buffer. Syntax: #include <setjmp.h> void longjmp(jmp_buf env, int val);
43.216 - longname
Returns the full name of the terminal. The name parameter is a character-string buffer with a minimum length of 64 characters, and must be large enough to hold the name. Syntax: #include <curses.h> void longname(char *termbuf, char *name);
43.217 - lrand48
Generates uniformly distributed pseudorandom number sequences. Returns 48-bit signed long integers. Syntax: #include <stdlib.h> long int lrand48 (void);
43.218 - lseek
Positions a file to an arbitrary byte position and returns the new position as an int. Syntax: #include <unistd.h> off_t lseek(int file_descriptor, off_t offset, int direction);
43.219 - lwait
Is used to wait for I/O on a specific file to complete. Syntax: #include <stdio.h> int lwait(int fd);
43.220 - malloc
Allocates an area of memory. This function is AST-reentrant. This function allocates a contiguous area of memory whose size, in bytes, is supplied as an argument. The space is not initialized. Syntax: #include <stdlib.h> void *malloc(size_t size); Note: The malloc routines calls the system routine LIB$VM_MALLOC. Because LIB$VM_MALLOC is designed as a general purpose routine to allocate memory, it is called upon in a wide array of scenarios to allocate and reallocate blocks efficiently. The most common usage is the management of smaller blocks of memory, and the most important aspect of memory allocation under these circumstances is efficiency. LIB$VM_MALLOC makes use of its own free space to satisfy requests, once the heap storage is consumed by splitting large blocks and merging adjacent blocks. Memory can still become fragmented, leaving unused blocks. Once heap storage is consumed, LIB$VM_MALLOC manages its own free space and merged blocks to satisfy requests, but varying sizes of memory allocations can cause blocks to be left unused. Because LIB$VM_MALLOC cannot be made to satisfy all situations in the best possible manner, you should perform your own memory management if you have special memory usage needs. This assures the best use of memory for your particular application. The OpenVMS Programming Concepts Manual explains the several memory allocation routines that are available. They are grouped into 3 levels of hierarchy: o At the highest level are the RTL Heap Management Routines LIB$GET_VM and LIB$FREE_VM, which provide a mechanism for allocating and freeing blocks of memory of arbitrary size. Also at this level are the routines based on the concept of zones, such as LIB$CREATE_VM_ZONE, and so on. o At the next level are the RTL Page Management routines LIB$GET_VM_PAGE and LIB$FREE_VM_PAGE, which allocate a specified number of contiguous pages. o At the lowest level are the Memory Management System Services such as $CRETVA and $EXPREG that provide extensive control over address space allocation. Note that at the this level, you must manage the allocation precisely.
43.221 - mblen
Determines the number of bytes comprising a multibyte character. Syntax: #include <stdlib.h> int mblen(const char *s, size_t n);
43.222 - mbstowcs
Converts a sequence of multibyte characters into a sequence of corresponding wide-character codes. Syntax: #include <stdlib.h> size_t mbstowcs(wchar_t *pwcs, const char *s, size_t n);
43.223 - mbtowc
Converts a multibyte character to its wide-character equivalent. Syntax: #include <stdlib.h> int mbtowc(wchar_t *pwc, const char *s, size_t n);
43.224 - mbrlen
Returns the number of multibyte characters in a multibyte character sequence. Syntax: #include <wchar.h> size_t mbrlen (const char *s, size_t n, mbstate_t *ps);
43.225 - mbrtowc
Determines the number of bytes needed to complete the next multibyte character, including shift sequences. Syntax: #include <wchar.h> size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
43.226 - mbsinit
Determines an initial state conversion. Syntax: #include <wchar.h> int mbsinit (const mbstate_t *ps);
43.227 - mbsrtowcs
Converts a multibyte character sequence to a corresponding wide character sequence. Syntax: #include <wchar.h> size_t mbsrtowcs (wchar_t *dst, const char **src, size_t len, mbstate_t *ps);
43.228 - memccpy
Copies characters sequentially between strings in memory areas. Syntax: #include <string.h> void *memccpy (void *destination_str, void *source_str, int c, size_t n);
43.229 - memchr
Locates the first occurrence of the specified byte within the initial size bytes of a given object. Syntax: #include <string.h> void *memchr (const void *s1, int c, size_t size);
43.230 - memcmp
Compares two objects, byte by byte. The compare operation starts with the first byte in each object. It returns an integer less than, equal to, or greater than 0, depending on whether the lexical value of the first object is less than, equal to, or greater than that of the second object. Syntax: #include <string.h> int memcmp (const void *s1, const void *s2, size_t size);
43.231 - memcpy
Copies a specified number of bytes from one object to another. Use memmove rather than memcpy if the area pointed to by the destination string could overlap the area pointed to by the source string; memmove safely handle copies between overlapping objects; memcpy gives undefined behavior. Syntax: #include <string.h> void *memcpy (void *destination_str, const void *source_str, size_t size);
43.232 - memmove
Copies a specified number of bytes from one object to another. Use memmove rather than memcpy if the area pointed to by the destination string could overlap the area pointed to by the source string; memmove safely handle copies between overlapping objects; memcpy gives undefined behavior. Syntax: #include <string.h> void *memmove(void *destination_str, const void *source_str, size_t size);
43.233 - memset
Sets a specified number of bytes in a given object to a given value. memset copies value (converted to an unsigned char) into each of the first size characters of the object pointed to by s. Syntax: #include <string.h> void *memset (void *s, int value, size_t size);
43.234 - mkdir
Creates a directory. Syntax: #include <stat.h> int mkdir(const char *dir_spec, mode_t mode); (POSIX-1) int mkdir(const char *dir_spec, mode_t mode,...); (Compaq C Extension) where the ... represents the following optional arguments. These arguments have fixed position in the argument list, and cannot be arbitrarily placed. o unsigned int uic o unsigned short max_versions o unsigned short r_v_number
43.235 - mkstemp
Constructs a unique filename. Syntax: #include <stdlib.h> int mkstemp (char *template);
43.236 - mktemp
Creates a unique file name from a template that you supply. Syntax: #include <stdlib.h> char *mktemp(char *template);
43.237 - mktime
Converts the local time structure to a calendar time value. Syntax: #include <time.h> time_t mktime(struct tm *timeptr);
43.238 - mmap
Maps a file system object into virtual memory. Syntax: #include <types.h> #include <mman.h> void mmap (void *addr, size_t len, int prot, int flags, int filedes, off_t off); [xopen/posix-1] size_t len, int prot, int flags, int filedes, off_t off...); [Compaq C extension]
43.239 - modf
Returns the positive fractional part of its first argument and assigns the integer part, expressed as an object of type double, to the object whose address is specified by the second argument. Syntax: #include <math.h> double modf(double value, double *iptr);
43.240 - [w]move
Curses Screen Management function and macro that change the current cursor position on the specified window to the coordinates (y,x). The move macro acts on the stdscr window. Syntax: #include <curses.h> int move(int y, int x); int wmove(WINDOW *win, int y, int x);
43.241 - mprotect
Modifies access protections of memory mapping. Syntax: #include <mman.h> int mprotect (void *addr, size_t len, int prot);
43.242 - mrand48
Generate uniformly distributed pseudorandom number sequences. Returns 48-bit signed long integers. Syntax: #include <stdlib.h> long int mrand48 (void);
43.243 - msync
Synchronizes a mapped file. Syntax: #include <mman.h> int msync (void *addr, size_t len, int flags);
43.244 - munmap
Unmaps a mapped region. Syntax: #include <mman.h> int munmap (void *addr,size_t len);
43.245 - mv[w]addch
Curses Screen Management macros that move the cursor to coordinates (y,x) and add the character ch to the specified window. The mvaddch macro acts on the stdscr window. Syntax: #include <curses.h> int mvaddch(int y, int x, char ch); int mvwaddch(WINDOW *win, int y, int x, char ch);
43.246 - mv[w]addstr
Curses Screen Management macros that move the cursor to coordinates (y,x) and add the specified string, to which str points, to the specified window. The mvaddstr macro acts on the stdscr window. Syntax: #include <curses.h> int mvaddstr(int y, int x, char *str); int mvwaddstr(WINDOW *win, int y, int x, char *str);
43.247 - mvcur
Curses Screen Management macro that moves the terminal's cursor from (lasty,lastx) to (newy,newx). Syntax: #include <curses.h> int mvcur(int lasty, int lastx, int newy, int newx);
43.248 - mv[w]delch
Curses Screen Management macros that move the cursor to coordinates (y,x) and delete the character on the specified window. The mvdelch macro acts on the stdscr window. Syntax: #include <curses.h> int mvdelch(int y, int x); int mvwdelch(WINDOW *win, int y, int x);
43.249 - mv[w]getch
Curses Screen Management macros that move the cursor to coordinates (y,x), get a character from the terminal screen, and echo it on the specified window. The mvgetch macro works on the stdscr window. Syntax: #include <curses.h> int mvgetch(int y, int x); int mvwgetch(WINDOW *win, int y, int x);
43.250 - mv[w]getstr
Curses Screen Management macros that move the cursor to coordinates (y,x), get a string from the terminal screen, and echo it on the specified window. The mvgetstr macro acts on the stdscr window. Syntax: #include <curses.h> int mvgetstr(int y, int x, char *str); int mvwgetstr(WINDOW *win, int y, int x, char *str);
43.251 - mv[w]inch
Curses Screen Management macros that move the cursor to coordinates (y,x) and return the character on the specified window without making changes to the window. The mvinch macro acts on the stdscr window. Syntax: #include <curses.h> int mvinch(int y, int x); int mvwinch(WINDOW *win, int y, int x);
43.252 - mv[w]insch
Curses Screen Management macros that move the cursor to coordinates (y,x) and insert the character ch in the specified window. The mvinsch macro acts on the stdscr window. Syntax: #include <curses.h> int mvinsch(int y, int x, char ch); int mvwinsch(WINDOW *win, int y, int x, char ch);
43.253 - mv[w]insstr
Curses Screen Management macros that move the cursor to coordinates (y,x) and insert a string on the specified window. The mvinsstr macro acts on the stdscr window. Syntax: #include <curses.h> int mvinsstr(int y, int x, char *str); int mvwinsstr(WINDOW *win, int y, int x, char *str);
43.254 - mvwin
Curses Screen Management macro that moves the starting position of the window to the specified (y,x) coordinates. Syntax: #include <curses.h> int wvwin(WINDOW *win, int y, int x);
43.255 - newwin
Curses Screen Management routine that creates a new window with numlines lines and numcols columns starting at the coordinates (begin_y, begin_x) on the terminal screen. Syntax: #include <curses.h> WINDOW *newwin(int numlines, int numcols, int begin_y, int begin_x);
43.256 - nice
Increments or decrements the process priority relative to the process current priority by the amount of the argument. A negative argument increments the priority; a positive argument decrements it. Issuing nice(0) restores the base priority. The resulting priority cannot be less than 1, or greater than the process's base priority. This function is nonreentrant. Syntax: #include <unistd.h> nice(int increment);
43.257 - [no]nl
This function and macro are provided for UNIX* software compability and have no OpenVMS function. ---------- * UNIX is a trademark of The Open Group.
43.258 - nl_langinfo
Returns a pointer to a string that contains information obtained from the program's current locale. Syntax: #include <langinfo.h> char *nl_langinfo (nl_item item);
43.259 - nrand48
Generate uniformly distributed pseudorandom number sequences. Returns 48-bit signed long integers. Syntax: #include <stdlib.h> long int nrand48 (unsigned short int xsub[3]);
43.260 - open
Opens a file for reading, writing, or editing. It positions the file at its beginning (byte 0). Syntax: #include <fcntl.h> int open(const char *file_spec, int flags, mode_t mode); (ANSI C) int open(const char *file_spec, int flags,...); (CEC C Extension) where the ... represents optional file attribute arguments. The file attribute arguments are the same as those used in the creat function.
43.261 - opendir
Opens a specified directory. Syntax: #include <dirent.h> DIR *opendir (const char *dir_name);
43.262 - overlay
Curses Screen Management routine that superimposes win1 on win2. The function writes the contents of win1 that will fit onto win2 beginning at the starting coordinates of both windows. Blanks on win1 leave the contents of the corresponding space on win2 unaltered. The overlay function copies as much of the window's box as possible. Syntax: #include <curses.h> int overlay(WINDOW *win1, WINDOW *win2);
43.263 - overwrite
Curses Screen Management routine that destructively overwrites the contents of win1 on win2. Syntax: #include <curses.h> int overwrite(WINDOW *win1, WINDOW *win2);
43.264 - pause
Suspends the calling process until delivery of a signal whose action is either to execute a signal-catching function or to terminate the process. Syntax: #include <unistd.h> int pause(void)
43.265 - pathconf
Retrieves file implementation characteristics. Syntax: #include <unistd.h> long int pathconf (const char *path, int name);
43.266 - pclose
Closes a pipe to a process. Syntax: #include <stdio.h> int pclose (FILE *stream);
43.267 - perror
Writes a short message to stderr describing the last error encountered during a call to the Compaq C RTL from a C program. Syntax: #include <stdio.h> void perror(const char *string);
43.268 - pipe
Creates a temporary mailbox. You must use a mailbox to read and write data between the parent and child. The channels through which the processes communicate are called a pipe. Syntax: #include <unistd.h> int pipe(int file_descriptor[2]); (POSIX-1) int pipe(int file_descriptor[2],...); (Compaq C Extension) where: file_descriptor[2] - is an array of file descriptors. A pipe is implemented as an array of file descriptors associated with a mailbox. These mailbox descriptors are special in that these are the only file descriptors which, when passed to the isapipe function, will return 1. Element 0 of the file_descriptor array contains the descriptor for reading; element 1 contains the descriptor for writing. .. represents two optional arguments: flags - If either the O_NDELAY or O_NONBLOCK bit is set, the I/O operations to the mailbox through the specified file descriptors will terminate immediately, rather than waiting for another process. If, for example, the O_NDELAY bit is set and the child issues a read request to the mailbox before the parent has put any data into it, the read terminates immediately with zero status. If neither the O_NDELAY nor O_NONBLOCK bit is set, the child will be waiting on the read until the parent writes any data into the mailbox. This is the default behavior if no flag argument is specified. The values of O_NDELAY and O_NONBLOCK are defined in the <fcntl.h> header file. Any other bits in the flag argument are ignored. You must specify this argument if the second optional, positional argument bufsize is specified. If the flag argument is needed only to allow specification of the bufsize argument, specify flag as zero. bufsize -- specifies the size of the mailbox, in bytes. If you do not specify this argument, a mailbox is created with a default size of 512 bytes.
43.269 - popen
Initiates a pipe to a process. Syntax: #include <stdio.h> FILE *popen (const char *command, const char *type);
43.270 - pow
Returns the first argument raised to the power of the second argument. Syntax: #include <math.h> double pow(double base, double exp);
43.271 - printf
Performs formatted output to the standard output (stdout). Syntax: #include <stdio.h> int printf(const char *format_string,...); where the ... represents optional expressions whose resultant types correspond to conversion specifications given in the format specification. If no conversion specifications are given, you may omit the output sources. Otherwise, the function call must have exactly as many output sources as there are conversion specifications, and the conversion specifications must match the types of the output sources. Conversion specifications are matched to output sources in left-to-right order. The format string for the output of information can contain two kinds of items: o Ordinary characters, which are copied to the output. o Conversion specifications, each of which causes the conversion of a corresponding output source to a character string in a particular format. Conversion specifications are matched to output sources in left-to-right order. A conversion specification consists of a % (or a %n$), followed by one or more optional characters, and concluding with a conversion specifier.
43. 271.1 - Optional character
flags You can use the following flag characters, alone or in any combined order, to modify the conversion specification: ' Requests that a numeric conversion is formatted with the thousands separator character. Only the numbers to the left of the radix character are formatted with the separator character. The character used as a separator and the positioning of the separators are defined in the program's current locale. -(hyphen) Left-justifies the converted output source in its field. + Requests that an explicit sign be present on a signed conversion. If this flag is not specified, the result of a signed conversion begins with a sign only when a negative value is converted. space Prefixes a space to the result of a signed conversion, if the first character of the conversion is not a sign, or if the conversion results in no characters. If you specify both the space and the + flag, the space flag is ignored. # Requests an alternate form conversion. Depending on the conversion specified, different actions will occur. For the o (octal) conversion, the precision is increased to force the first digit to be a 0. For the x (or X) conversion, a nonzero result is prefixed with 0x (or 0X). For e, E, f, g, and G conversions, the result contains a decimal point even at the end of an integer value. For g and G conversions, trailing zeros are not trimmed. For other conversions, the effect of # is undefined. 0 Uses zeros rather than spaces to pad the field width for d, i, o, u, x, X, e, E, f, g, and G conversions. If both the 0 and the - flags are specified, then the 0 flag is ignored. For d, i, o, u, x, and X conversions, if a precision is specified, the 0 flag is ignored. For other conversions, the behavior of the 0 flag is undefined. field width The minimum field width can be designated by a decimal integer constant, or by an output source. To specify an output source, use an asterisk (*) or the sequence *n$, where n refers to the nth output source listed after the format specification. If the converted output source is wider than the minimum field, write it out. If the converted output source is narrower than the minimum width, pad it to make up the field width. Pad with spaces, by default. Pad with zeros if the 0 flag is specified; this does not mean that the width is an octal number. Padding is on the left by default, and on the right if a minus sign is specified. If an asterisk is used for the field width, the corresponding width is given in the output source. period (.) Separates the field width from the precision. precision The precision defines the minimum number of digits to appear for d, i, o, u, x, and X conversions; the number of digits to appear after the decimal-point character for e, E, and f conversions; the maximum number of significant digits for g and G conversions; or the maximum number of characters to be written from a string in an s or S conversion. If a precision appears with any other conversion specifier, the behavior is undefined. Precision can be designated by a decimal integer constant, or by an output source. To specify an output source, use an asterisk (*) or the sequence *n$, where n refers to the nth output source listed after the format specification. If only the period is specified, the precision is taken as 0. h, l, or L An h specifies that a following d, i, o, u, x, or X conversion specifier applies to a short int or unsigned short int argument; an h can also specify that a following n conversion specifier applies to a pointer to a short int argument. An l (lowercase ell) specifies that a following d, i, o, u, x, or X conversion specifier applies to a long int or unsigned long int argument; an l can also specify that a following n conversion specifier applies to a pointer to a long int argument. An L specifies that a following e, E, f, g, or G conversion specifier applies to a long double argument. If an h, l, or L appears with any other conversion specifier, the behavior is undefined. On Compaq C for OpenVMS VAX and Alpha Systems, int values are equivalent to long values.
43. 271.2 - Conversion Specifier
d, i Converts an int argument to signed decimal format. o Converts an unsigned int argument to unsigned octal format. u Converts an unsigned int argument to unsigned decimal format (giving a number in the range 0 to 4,294,967,295). x, X Converts an unsigned int argument to unsigned hexadecimal format (with or without a leading 0x). The letters 'abcdef' are used for the x conversion; the letters 'ABCDEF' are used for the X conversion. f Converts a float or double argument to the format [-]mmm.nnnnnn. The number of n's is equal to the precision specification. If no precision is specified, the default is 6. If the precision is 0 and the # flag is specified, the decimal point appears but no n's appear. If the precision is 0 and the # flag is not specified, the decimal point also does not appear. If a decimal point appears, at least one digit appears before it. The value is rounded to the appropriate number of digits. e, E Converts a float or double argument to the format [-]m.nnnnnnE[+|-]xx. The number of n's is specified by the precision. If no precision is specified, the default is 6. If the precision is explicitly 0 and the # flag is specified, the decimal point appears but no n's appear. If the precision is explicitly 0 and the # flag is not specified, the decimal point also does not appear. An 'e' is printed for e conversion; an 'E' is printed for E conversion. The exponent always contains at least two digits. If the value is 0, the exponent is 0. g, G Converts a float or double argument to format f or e (or E if the G conversion specifier is used), with the precision specifying the number of significant digits. If the precision is 0, it is taken as 1. c Converts an int argument to an unsigned char, and writes the resulting character (null characters are ignored). C Converts a wchar_t argument to an array of bytes representing the character, and writes the resulting character. If the field width is specified and the resulting character occupies fewer bytes than the field width, it will be padded to the given width with space characters. If the precision is specified, the behavior is undefined. s Requires an argument that is a pointer to an array of characters of type char. The argument is used to write characters until a null character is encountered or until the number of characters indicated by the precision specification is exhausted. If the precision specification is 0 or omitted, all characters up to a null are output. S Converts an array of wide-character codes to multibyte characters, and writes the multibyte characters. Requires an argument that is a pointer to an array of wide characters of type wchar_t. Characters are written until a null wide character is encountered or until the number of bytes indicated by the precision specification is exhausted. If the precision specification is omitted or is greater than the size of the array of converted bytes, the array of wide characters must be terminated by a null wide character. p Requires an argument that is a pointer to void. The value of the pointer is output as a hexadecimal character. n Requires an argument that is a pointer to an integer. The integer is assigned the number of characters written to the output stream so far by this call to the formatted output function. No argument is converted. % Writes out the percent symbol. No conversion is performed. The complete conversion specification would be %%.
43.272 - [w]printw
Curses Screen Management function and macro that perform a printf in the specified window starting at the current position of the cursor. The printw macro acts on the stdscr window. Syntax: #include <curses.h> printw(char *format_string,...); int wprintw(WINDOW *win, char *format_string,...); where the ... represents optional expressions whose resultant types correspond to conversion specifications given in the format specification. If no conversion specifications are given, you may omit the output sources. Otherwise, the function call must have exactly as many output sources as there are conversion specifications, and the conversion specifications must match the types of the output sources. Conversion specifications are matched to output sources in left-to-right order. The format string for the output of information can contain two kinds of items: o Ordinary characters, which are copied to the output. o Conversion specifications, each of which causes the conversion of a corresponding output source to a character string in a particular format. Conversion specifications are matched to output sources in left-to-right order. A conversion specification consists of a % (or a %n$), followed by one or more optional characters, and concluding with a conversion specifier.
43. 272.1 - Optional character
flags You can use the following flag characters, alone or in any combined order, to modify the conversion specification: ' Requests that a numeric conversion is formatted with the thousands separator character. Only the numbers to the left of the radix character are formatted with the separator character. The character used as a separator and the positioning of the separators are defined in the program's current locale. -(hyphen) Left-justifies the converted output source in its field. + Requests that an explicit sign be present on a signed conversion. If this flag is not specified, the result of a signed conversion begins with a sign only when a negative value is converted. space Prefixes a space to the result of a signed conversion, if the first character of the conversion is not a sign, or if the conversion results in no characters. If you specify both the space and the + flag, the space flag is ignored. # Requests an alternate form conversion. Depending on the conversion specified, different actions will occur. For the o (octal) conversion, the precision is increased to force the first digit to be a 0. For the x (or X) conversion, a nonzero result is prefixed with 0x (or 0X). For e, E, f, g, and G conversions, the result contains a decimal point even at the end of an integer value. For g and G conversions, trailing zeros are not trimmed. For other conversions, the effect of # is undefined. 0 Uses zeros rather than spaces to pad the field width for d, i, o, u, x, X, e, E, f, g, and G conversions. If both the 0 and the - flags are specified, then the 0 flag is ignored. For d, i, o, u, x, and X conversions, if a precision is specified, the 0 flag is ignored. For other conversions, the behavior of the 0 flag is undefined. field width The minimum field width can be designated by a decimal integer constant, or by an output source. To specify an output source, use an asterisk (*) or the sequence *n$, where n refers to the nth output source listed after the format specification. If the converted output source is wider than the minimum field, write it out. If the converted output source is narrower than the minimum width, pad it to make up the field width. Pad with spaces, by default. Pad with zeros if the 0 flag is specified; this does not mean that the width is an octal number. Padding is on the left by default, and on the right if a minus sign is specified. If an asterisk is used for the field width, the corresponding width is given in the output source. period (.) Separates the field width from the precision. precision The precision defines the minimum number of digits to appear for d, i, o, u, x, and X conversions; the number of digits to appear after the decimal-point character for e, E, and f conversions; the maximum number of significant digits for g and G conversions; or the maximum number of characters to be written from a string in an s or S conversion. If a precision appears with any other conversion specifier, the behavior is undefined. Precision can be designated by a decimal integer constant, or by an output source. To specify an output source, use an asterisk (*) or the sequence *n$, where n refers to the nth output source listed after the format specification. If only the period is specified, the precision is taken as 0. h, l, or L An h specifies that a following d, i, o, u, x, or X conversion specifier applies to a short int or unsigned short int argument; an h can also specify that a following n conversion specifier applies to a pointer to a short int argument. An l (lowercase ell) specifies that a following d, i, o, u, x, or X conversion specifier applies to a long int or unsigned long int argument; an l can also specify that a following n conversion specifier applies to a pointer to a long int argument. An L specifies that a following e, E, f, g, or G conversion specifier applies to a long double argument. If an h, l, or L appears with any other conversion specifier, the behavior is undefined. On Compaq C for OpenVMS VAX and Alpha Systems, int values are equivalent to long values.
43. 272.2 - Conversion Specifier
d, i Converts an int argument to signed decimal format. o Converts an unsigned int argument to unsigned octal format. u Converts an unsigned int argument to unsigned decimal format (giving a number in the range 0 to 4,294,967,295). x, X Converts an unsigned int argument to unsigned hexadecimal format (with or without a leading 0x). The letters 'abcdef' are used for the x conversion; the letters 'ABCDEF' are used for the X conversion. f Converts a float or double argument to the format [-]mmm.nnnnnn. The number of n's is equal to the precision specification. If no precision is specified, the default is 6. If the precision is 0 and the # flag is specified, the decimal point appears but no n's appear. If the precision is 0 and the # flag is not specified, the decimal point also does not appear. If a decimal point appears, at least one digit appears before it. The value is rounded to the appropriate number of digits. e, E Converts a float or double argument to the format [-]m.nnnnnnE[+|-]xx. The number of n's is specified by the precision. If no precision is specified, the default is 6. If the precision is explicitly 0 and the # flag is specified, the decimal point appears but no n's appear. If the precision is explicitly 0 and the # flag is not specified, the decimal point also does not appear. An 'e' is printed for e conversion; an 'E' is printed for E conversion. The exponent always contains at least two digits. If the value is 0, the exponent is 0. g, G Converts a float or double argument to format f or e (or E if the G conversion specifier is used), with the precision specifying the number of significant digits. If the precision is 0, it is taken as 1. c Converts an int argument to an unsigned char, and writes the resulting character (null characters are ignored). C Converts a wchar_t argument to an array of bytes representing the character, and writes the resulting character. If the field width is specified and the resulting character occupies fewer bytes than the field width, it will be padded to the given width with space characters. If the precision is specified, the behavior is undefined. s Requires an argument that is a pointer to an array of characters of type char. The argument is used to write characters until a null character is encountered or until the number of characters indicated by the precision specification is exhausted. If the precision specification is 0 or omitted, all characters up to a null are output. S Converts an array of wide-character codes to multibyte characters, and writes the multibyte characters. Requires an argument that is a pointer to an array of wide characters of type wchar_t. Characters are written until a null wide character is encountered or until the number of bytes indicated by the precision specification is exhausted. If the precision specification is omitted or is greater than the size of the array of converted bytes, the array of wide characters must be terminated by a null wide character. p Requires an argument that is a pointer to void. The value of the pointer is output as a hexadecimal character. n Requires an argument that is a pointer to an integer. The integer is assigned the number of characters written to the output stream so far by this call to the formatted output function. No argument is converted. % Writes out the percent symbol. No conversion is performed. The complete conversion specification would be %%.
43.273 - putc
Writes characters to a specified file. Syntax: #include <stdio.h> int putc(int character, FILE *file_pointer);
43.274 - putchar
Writes a single character to the standard output (stdout) and returns the character. Syntax: #include <stdio.h> int putchar(int character);
43.275 - putenv
Set an environmental variable. Syntax: #include <stdlib.h> int putenv (const char *string);
43.276 - puts
Writes a character string to the standard output (stdout) followed by a new-line. Syntax: #include <stdio.h> int puts(const char *string);
43.277 - putw
Writes characters to a specified file. Syntax: #include <stdio.h> int putw(int integer, FILE *file_pointer);
43.278 - putwc
Converts a wide character to its corresponding multibyte value, and writes the result to a specified file. Syntax: #include <wchar.h> wint_t putwc(wint_t wc FILE *file_pointer);
43.279 - putwchar
Writes a wide character to the standard output (stdout) and returns the character. Syntax: #include <wchar.h> wint_t putwchar(wint_t wc);
43.280 - qsort
Sorts an array of objects in place. It implements the quick-sort algorithm. Syntax: #include <stdlib.h> void qsort (void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *));
43.281 - raise
Generates a specified software signal. Generating a signal causes the action routine established by the signal, ssignal, or sigvec function to be invoked. Syntax: #include <signal.h> int raise(int sig); (ANSI C) int raise(int sig[, int sigcode]); (Compaq C Extension)
43.282 - rand
Returns pseudorandom numbers in the range 0 to (2**31-1). Syntax: #include <math.h> int rand(void);
43.283 - random
Generates pseudorandom numbers in a more random sequence. Syntax: #include <stdlib.h> long int random (void);
43.284 - [no]raw
Curses Screen Management macros that set and unset the terminal to and from raw mode. The raw function performs the same task as the crmode macro except that raw does not imply nonl. These macros only work with [w]getch and [w]getstr. Syntax: #include <curses.h> raw() noraw()
43.285 - read
Reads bytes from a file and places them in a buffer. Syntax: #include <unistd.h> ssize_t read(int file_descriptor, void *buffer, size_t nbytes); (POSIX-1) int read(int file_descriptor, void *buffer, int nbytes); (Compatibility)
43.286 - readdir
Finds entries in a directory. Syntax: #include <dirent.h> struct dirent *readdir (DIR *dir_pointer);
43.287 - realloc
Changes the size of the area pointed to by the first argument to the number of bytes given by the second argument. This function is AST-reentrant. Syntax: #include <stdlib.h> void *realloc(void *pointer, size_t size);
43.288 - [w]refresh
Curses Screen Management function and macro that repaint the specified window on the terminal screen. The refresh macro acts on the stdscr window. Syntax: #include <curses.h> int refresh(); int wrefresh(WINDOW *win);
43.289 - remove
Deletes a file. Syntax: #include <stdio.h> int remove (const char *file-spec);
43.290 - rename
Gives a new name to an existing file. Syntax: #include <stdio.h> int rename (const char *old_file_spec, const char *new_file_spec);
43.291 - rewind
Sets the file to its beginning. Syntax: #include <stdio.h> void rewind(FILE *file_pointer); (POSIX-1) int rewind(FILE *file_pointer); (Compaq C Extension)
43.292 - rewinddir
Resets the position of the specified directory stream to the beginning. Syntax: #include <dirent.h> void rewinddir (DIR *dir_pointer);
43.293 - rindex
Searches for character in string. Syntax: #include <strings.h> char *rindex (const char *s, int c);
43.294 - rmdir
Removes a directory file. Syntax: #include <unistd.h> int rmdir (const char *path);
43.295 - sbrk
Determines the lowest virtual address that is not used with the program. Syntax: #include <unistd.h> void *sbrk(long int incr);
43.296 - scanf
Performs formatted input from the standard input (stdin). Syntax: #include <stdio.h> int scanf(const char *format_string,...); where the ... represents optional expressions that are pointers to objects whose resultant types correspond to conversion specifications given in the format_string. If no conversion specifications are given, you may omit these input pointers. Otherwise, the function call must have at least as many input pointers as there are conversion specifications, and the conversion specifications must match the types of the input pointers. Conversion specifications are matched to input sources in left-to-right order. Excess input pointers, if any, are ignored. The format string for the input of information can include three kinds of items: o White-space characters (spaces, tabs, and new-line characters), which match optional white-space characters in the input field. o Ordinary characters (not %), which must match the next nonwhite-space character in the input. o Conversion specifications, which govern the conversion of the characters in an input field and their assignment to an object indicated by a corresponding input pointer. A conversion specification consists of the following characters, in the order listed: o A percent character (%) or the sequence %n$ (where n is an integer). The sequence %n$ denotes that the conversion is applied to the nth input pointer listed, where n is a decimal integer between [1, NL_ARGMAX] (see the <limits.h> header file). For example, a conversion specification beginning %5$ means that the conversion will be applied to the 5th input pointer listed after the format specification. The sequence %$ is invalid. If the conversion specification does not begin with the sequence %n$ the conversion specification is matched to its input pointer in left-to-right order. You should only use one type of conversion specification (% or %n$) in a format specification. o One or more optional characters o A conversion specifier.
43. 296.1 - Optional character
* Assignment-suppressing character field width Nonzero decimal integer that specifies the maximum field width. h, l, or L Precede a conversion specifier of d, i, or n with an h if the corresponding argument is a pointer to short int rather than a pointer to int, or with an l (lowercase ell) if it is a pointer to long int. Similarly, precede a conversion specifier of o, u, or x with an h if the corresponding argument is a pointer to unsigned short int rather than a pointer to unsigned int, or with an l (lowercase ell) if it is a pointer to unsigned long int. Finally, precede a conversion specifier of e, f, or g with an l (lowercase ell) if the corresponding argument is a pointer to double rather than a pointer to float, or with an L if it is a pointer to long double. If an h, l, or L appears with any other conversion specifier, the behavior is undefined.
43. 296.2 - Conversion Specifier
d Expects a decimal integer in the input whose format is the same as expected for the subject sequence of the strtol function with the value 10 for the base argument. The corresponding argument must be a pointer to int. i Expects an integer whose type is determined by the leading input characters. For example, a leading 0 is equated to octal, a leading 0X is equated to hexadecimal, and all other forms are equated to decimal. The corresponding argument must be a pointer to int. o Expects an octal integer in the input (with or without a leading 0). The corresponding argument must be a pointer to int. u Expects a decimal integer in the input whose format is the same as expected for the subject sequence of the strtoul function with the value 10 for the base argument. x Expects a hexadecimal integer in the input (with or without a leading 0x). The corresponding argument must be a pointer to unsigned int. c Expects a single byte in the input. The corresponding argument must be a pointer to char. If a field width precedes the c conversion specifier, the number of characters specified by the field width is read. In this case, the corresponding argument must be a pointer to an array of char. C Expects a multibyte character in the input which is converted into a wide character code. The corresponding argument must be a pointer to type wchar_t. If a field width precedes the C conversion specifier, the number of characters specified by the field width is read; in this case, the corresponding argument must be a pointer to array of wchar_t. s Expects a sequences of bytes in the input. The corresponding argument must be a pointer to an array of characters that is large enough to contain the sequence plus a terminating null character, which is added automatically. The input field is terminated by a space, tab, or new-line character. S Expects a sequence of multibyte characters in the input, which are converted to wide-character codes. The corresponding argument must be a pointer to an array of wide characters (type wchar_t) that is large enough to contain the sequence plus a terminating null wide-character code which is added automatically. The input field is terminated by a space, tab, or new-line character. e,f,g Expects a floating-point number in the input. The corresponding argument must be a pointer to float. The input format for floating-point numbers is: [+|-]nnn[radix][ddd][{E|e}[+|-]nn] The n's and d's are decimal digits (as many as indicated by the field width minus the signs and the letter E). The radix character is defined in the current locale. [...] Expects a nonempty sequence of characters that is not delimited by a white-space character. The brackets enclose a set of characters (the scanset) expected in the input sequence. Any character in the input sequence that does not match a character in the scanset terminates the character sequence. The corresponding argument must be a pointer to an array of characters. All characters between the brackets comprise the scanset, unless the first character after the left bracket is a circumflex (^). In this case, the scanset contains all characters other than those that appear between the circumflex and the right bracket; that is, any character that does appear between the circumflex and the right bracket will terminate the input character sequence. If the conversion specifier begins with [] or [^], the right-bracket character is in the scanset and the next right-bracket character is the matching right bracket that ends the specification; otherwise, the first right bracket character ends the specification. p An argument that is a pointer to void. The input value is interpreted as a hexadecimal value. n No input is consumed. The corresponding argument is a pointer to an integer. The integer is assigned the number of characters read from the input stream so far by this call to the formatted input function. Execution of a %n directive does not increment the assignment count returned when the formatted input function completes execution. % Matches a single percent symbol. No conversion or assignment takes place. The complete conversion specification would be %%.
43.297 - [w]scanw
Curses Screen Management function and macro that perform a scanf on the window. The scanw macro acts on the stdscr window. Syntax: #include <curses.h> int scanw(char *format_string,...); int wscanw(WINDOW *win, char *format_string,...); where the ... represents optional expressions that are pointers to objects whose resultant types correspond to conversion specifications given in the format specification. If no conversion specifications are given, you may omit these input pointers. Otherwise, the function call must have at least as many input pointers as there are conversion specifications, and the conversion specifications must match the types of the input pointers. Conversion specifications are matched to input sources in left-to-right order. Excess input pointers, if any, are ignored. The format string for the input of information can include three kinds of items: o White-space characters (spaces, tabs, and new-line characters), which match optional white-space characters in the input field. o Ordinary characters (not %), which must match the next nonwhite-space character in the input. o Conversion specifications, which govern the conversion of the characters in an input field and their assignment to an object indicated by a corresponding input pointer. Each input pointer is an address expression indicating an object whose type matches that of a corresponding conversion specification. Conversion specifications form part of the format string. The indicated object is the target that receives the input value. There must be as many input pointers as there are conversion specifications, and the addressed objects must match the types of the conversion specifications. A conversion specification consists of the following characters, in the order listed: o A percent character (%) or the sequence %n$ (where n is an integer). The sequence %n$ denotes that the conversion is applied to the nth input pointer listed, where n is a decimal integer between [1, NL_ARGMAX] (see the <limits.h> header file). For example, a conversion specification beginning %5$ means that the conversion will be applied to the 5th input pointer listed after the format specification. The sequence %$ is invalid. If the conversion specification does not begin with the sequence %n$ the conversion specification is matched to its input pointer in left-to-right order. You should only use one type of conversion specification (% or %n$) in a format specification. o One or more optional characters o A conversion specifier.
43. 297.1 - Optional character
* Assignment-suppressing character field width Nonzero decimal integer that specifies the maximum field width. h, l, or L Precede a conversion specifier of d, i, or n with an h if the corresponding argument is a pointer to short int rather than a pointer to int, or with an l (lowercase ell) if it is a pointer to long int. Similarly, precede a conversion specifier of o, u, or x with an h if the corresponding argument is a pointer to unsigned short int rather than a pointer to unsigned int, or with an l (lowercase ell) if it is a pointer to unsigned long int. Finally, precede a conversion specifier of e, f, or g with an l (lowercase ell) if the corresponding argument is a pointer to double rather than a pointer to float, or with an L if it is a pointer to long double. If an h, l, or L appears with any other conversion specifier, the behavior is undefined.
43. 297.2 - Conversion Specifier
d Expects a decimal integer in the input whose format is the same as expected for the subject sequence of the strtol function with the value 10 for the base argument. The corresponding argument must be a pointer to int. i Expects an integer whose type is determined by the leading input characters. For example, a leading 0 is equated to octal, a leading 0X is equated to hexadecimal, and all other forms are equated to decimal. The corresponding argument must be a pointer to int. o Expects an octal integer in the input (with or without a leading 0). The corresponding argument must be a pointer to int. u Expects a decimal integer in the input whose format is the same as expected for the subject sequence of the strtoul function with the value 10 for the base argument. x Expects a hexadecimal integer in the input (with or without a leading 0x). The corresponding argument must be a pointer to unsigned int. c Expects a single byte in the input. The corresponding argument must be a pointer to char. If a field width precedes the c conversion specifier, the number of characters specified by the field width is read. In this case, the corresponding argument must be a pointer to an array of char. C Expects a multibyte character in the input which is converted into a wide character code. The corresponding argument must be a pointer to type wchar_t. If a field width precedes the C conversion specifier, the number of characters specified by the field width is read; in this case, the corresponding argument must be a pointer to array of wchar_t. s Expects a sequences of bytes in the input. The corresponding argument must be a pointer to an array of characters that is large enough to contain the sequence plus a terminating null character, which is added automatically. The input field is terminated by a space, tab, or new-line character. S Expects a sequence of multibyte characters in the input, which are converted to wide-character codes. The corresponding argument must be a pointer to an array of wide characters (type wchar_t) that is large enough to contain the sequence plus a terminating null wide-character code which is added automatically. The input field is terminated by a space, tab, or new-line character. e,f,g Expects a floating-point number in the input. The corresponding argument must be a pointer to float. The input format for floating-point numbers is: [+|-]nnn[radix][ddd][{E|e}[+|-]nn] The n's and d's are decimal digits (as many as indicated by the field width minus the signs and the letter E). The radix character is defined in the current locale. [...] Expects a nonempty sequence of characters that is not delimited by a white-space character. The brackets enclose a set of characters (the scanset) expected in the input sequence. Any character in the input sequence that does not match a character in the scanset terminates the character sequence. The corresponding argument must be a pointer to an array of characters. All characters between the brackets comprise the scanset, unless the first character after the left bracket is a circumflex (^). In this case, the scanset contains all characters other than those that appear between the circumflex and the right bracket; that is, any character that does appear between the circumflex and the right bracket will terminate the input character sequence. If the conversion specifier begins with [] or [^], the right-bracket character is in the scanset and the next right-bracket character is the matching right bracket that ends the specification; otherwise, the first right bracket character ends the specification. p An argument that is a pointer to void. The input value is interpreted as a hexadecimal value. n No input is consumed. The corresponding argument is a pointer to an integer. The integer is assigned the number of characters read from the input stream so far by this call to the formatted input function. Execution of a %n directive does not increment the assignment count returned when the formatted input function completes execution. % Matches a single percent symbol. No conversion or assignment takes place. The complete conversion specification would be %%.
43.298 - scroll
Curses Screen Management routine that moves all the lines on the window up one line. The top line scrolls off the window and the bottom line becomes blank. Syntax: #include <curses.h> int scroll(WINDOW *win);
43.299 - scrollok
Curses Screen Management macro that sets the scroll flag for the specified window. Syntax: #include <curses.h> scrollok(WINDOW *win, bool boolf);
43.300 - seed48
Initializes a 48-bit random number generator. Syntax: #include <stdlib.h> unsigned short *seed48 (unsigned short seed_16v[3]);
43.301 - seekdir
Sets the position in a directory to a specified directory entry. Performs operations on directories. Syntax: #include <dirent.h> void seekdir (DIR *dir_pointer, long int location);
43.302 - [w]setattr
Curses Screen Management function and macro that activate the video display attributes boldface, blinking, reverse video, and underlining within the window. The attributes are represented by _BOLD, _BLINK, _REVERSE, and _UNDERLINE. The setattr macro acts on the stdscr window. Syntax: #include <curses.h> int setattr(int attr); wsetattr(WINDOW *win, int attr);
43.303 - setbuf
Associates a buffer with an input or output file. Syntax: #include <stdio.h> void setbuf(FILE *file_pointer, char *buffer);
43.304 - setenv
Inserts or resets the environment variable name in the current environment list. Syntax: #include <stdlib.h> int setenv (const char *name, const char *value, int overwrite);
43.305 - setgid
Implemented for program portability and serves no function. It returns 0 (to indicate success). Syntax: #include <unistd.h> _DECC_V4_SOURCE defined: int setgid(__gid_t group_number); _DECC_V4_SOURCE not defined: gid_t setgid(gid_t group_number);
43.306 - setitimer
Sets the value of interval timers. Syntax: #include <time.h> #define ITIMER_REAL 0 #define ITIMER_VIRTUAL 1 #define ITIMER_PROF 2 int setitimer (int which, struct itimerval *value, struct itimerval *ovalue);
43.307 - setjmp
Provides a way to transfer control from a nested series of function invocations back to a predefined point without returning normally; that is, by not using a series of return statements. The setjmp function saves the context of the environment buffer. Syntax: #include <setjmp.h> int setjmp(jmp_buf env);
43.308 - setlocale
Selects the appropriate portion of the program's locale as specified by the category and locale arguments. This function can be used to change or query one category or the program's entire current locale. Syntax: #include <locale.h> char *setlocale(int category, const char *locale);
43.309 - setstate
Restarts, and changes random number generators. Syntax: char *setstate (char *state);
43.310 - setuid
Implemented for program portability and serves no function. It returns 0 (to indicate success). Syntax: #include <unistd.h> _DECC_V4_SOURCE defined: int setuid(__uid_t member_number); _DECC_V4_SOURCE not defined: uid_t setuid(uid_t member_number);
43.311 - setvbuf
Associates a buffer with an input or output file. Syntax: #include <stdio.h> int setvbuf (FILE *file_ptr, char *buffer, int type, size_t size);
43.312 - sigaction
Specifies the action to take upon delivery of a signal. Syntax: #include <signal.h> int sigaction (int signal, const struct sigaction *action, struct sigaction *o_action);
43.313 - sigaddset
Adds the specified individual signal. Syntax: #include <signal.h> int sigaddset (sigset_t *set, int sig_number);
43.314 - sigblock
Causes the signals designated in a mask to be added to the current set of signals being blocked from delivery. Syntax: #include <signal.h> int sigblock(int mask);
43.315 - sigdelset
Deletes a specified individual signal. Syntax: #include <signal.h> int sigdelset (sigset_t *set, int sig_number);
43.316 - sigemptyset
Initializes the signal set to exclude all signals. Syntax: #include <signal.h> int sigemptyset (sigset_t *set);
43.317 - sigfillset
Initializes the signal set to include all signals. Syntax: #include <signal.h> int sigfillset (sigset_t *set);
43.318 - sigismember
Tests whether a specified signal is a member of the signal set. Syntax: #include <signal.h> int sigismember (const sigset_t *set, int sig_number);
43.319 - siglongjmp
Nonlocal goto with signal handling. Syntax: #include <signal.h> void siglongjmp (sigjmp_buf env, int value);
43.320 - sigmask
Constructs the mask for a given signal number. Syntax: #include <signal.h> int sigmask (signum)
43.321 - signal
Allows you to specify the way in which the signal sig is to be handled: use the default handling for the signal, ignore the signal, or call the signal handler at the address specified. Syntax: #include <signal.h> void (*signal(int sig, void (*func) (int))) (int);
43.322 - sigpause
Assigns mask to the current set of masked signals and then waits for a signal. Syntax: #include <signal.h> int sigpause(int mask);
43.323 - sigpending
Examines pending signals. Syntax: #include <signal.h> int sigpending (sigset_t *set);
43.324 - sigprocmask
Sets the current signal mask. Syntax: #include <signal.h> int sigprocmask (int how, const sigset_t *set, sigset_t *o_set);
43.325 - sigsetjmp
Sets jump point for a nonlocal goto. Syntax: #include <signal.h> int sigsetjmp (sigjmp_buf env, int savemask);
43.326 - sigsetmask
Establishes those signals that are blocked from delivery. Syntax: #include <signal.h> int sigsetmask(int mask);
43.327 - sigstack
Defines an alternate stack on which to process signals. This allows the processing of signals in a separate environment from that of the current process. This function is nonreentrant. Syntax: #include <signal.h> int sigstack(struct sigstack *ss, struct sigstack *oss);
43.328 - sigsuspend
Atomically changes the set of blocked signals and waits for a signal. Syntax: #include <signal.h> int sigsuspend (const sigset_t *signal_mask);
43.329 - sigvec
Permanently assigns a handler for a specific signal. Syntax: #include <signal.h> int sigvec(int sigint, struct sigvec *sv, struct sigvec *osv);
43.330 - sin
Returns the sine of its radian argument. Syntax: #include <math.h> double sin(double x);
43.331 - sinh
Returns the hyperbolic sine of its argument. Syntax: #include <math.h> double sinh(double x);
43.332 - sleep
Suspends the execution of the current process for at least the number of seconds indicated by its argument. Syntax: #include <unistd.h> _DECC_V4_SOURCE defined: unsigned int sleep(unsigned seconds); _DECC_V4_SOURCE not defined: int sleep(unsigned seconds);
43.333 - sprintf
Performs formatted output to a string in memory. Syntax: #include <stdio.h> int sprintf(char *string, const char *format_string,...); where the ... represents optional expressions whose resultant types correspond to conversion specifications given in the format specification. If no conversion specifications are given, you may omit the output sources. Otherwise, the function calls must have at least as many output sources as there are conversion specifications, and the conversion specifications must match the types of the output sources. Conversion specifications are matched to output sources in left-to-right order. The format string for the output of information can contain two kinds of items: o Ordinary characters, which are copied to the output. o Conversion specifications, each of which causes the conversion of a corresponding output source to a character string in a particular format. Conversion specifications are matched to output sources in left-to-right order. A conversion specification consists of a % (or a %n$), followed by one or more optional characters, and concluding with a conversion specifier.
43. 333.1 - Optional character
flags You can use the following flag characters, alone or in any combined order, to modify the conversion specification: ' Requests that a numeric conversion is formatted with the thousands separator character. Only the numbers to the left of the radix character are formatted with the separator character. The character used as a separator and the positioning of the separators are defined in the program's current locale. -(hyphen) Left-justifies the converted output source in its field. + Requests that an explicit sign be present on a signed conversion. If this flag is not specified, the result of a signed conversion begins with a sign only when a negative value is converted. space Prefixes a space to the result of a signed conversion, if the first character of the conversion is not a sign, or if the conversion results in no characters. If you specify both the space and the + flag, the space flag is ignored. # Requests an alternate form conversion. Depending on the conversion specified, different actions will occur. For the o (octal) conversion, the precision is increased to force the first digit to be a 0. For the x (or X) conversion, a nonzero result is prefixed with 0x (or 0X). For e, E, f, g, and G conversions, the result contains a decimal point even at the end of an integer value. For g and G conversions, trailing zeros are not trimmed. For other conversions, the effect of # is undefined. 0 Uses zeros rather than spaces to pad the field width for d, i, o, u, x, X, e, E, f, g, and G conversions. If both the 0 and the - flags are specified, then the 0 flag is ignored. For d, i, o, u, x, and X conversions, if a precision is specified, the 0 flag is ignored. For other conversions, the behavior of the 0 flag is undefined. field width The minimum field width can be designated by a decimal integer constant, or by an output source. To specify an output source, use an asterisk (*) or the sequence *n$, where n refers to the nth output source listed after the format specification. If the converted output source is wider than the minimum field, write it out. If the converted output source is narrower than the minimum width, pad it to make up the field width. Pad with spaces, by default. Pad with zeros if the 0 flag is specified; this does not mean that the width is an octal number. Padding is on the left by default, and on the right if a minus sign is specified. If an asterisk is used for the field width, the corresponding width is given in the output source. period (.) Separates the field width from the precision. precision The precision defines the minimum number of digits to appear for d, i, o, u, x, and X conversions; the number of digits to appear after the decimal-point character for e, E, and f conversions; the maximum number of significant digits for g and G conversions; or the maximum number of characters to be written from a string in an s or S conversion. If a precision appears with any other conversion specifier, the behavior is undefined. Precision can be designated by a decimal integer constant, or by an output source. To specify an output source, use an asterisk (*) or the sequence *n$, where n refers to the nth output source listed after the format specification. If only the period is specified, the precision is taken as 0. h, l, or L An h specifies that a following d, i, o, u, x, or X conversion specifier applies to a short int or unsigned short int argument; an h can also specify that a following n conversion specifier applies to a pointer to a short int argument. An l (lowercase ell) specifies that a following d, i, o, u, x, or X conversion specifier applies to a long int or unsigned long int argument; an l can also specify that a following n conversion specifier applies to a pointer to a long int argument. An L specifies that a following e, E, f, g, or G conversion specifier applies to a long double argument. If an h, l, or L appears with any other conversion specifier, the behavior is undefined. On Compaq C for OpenVMS VAX and Alpha Systems, int values are equivalent to long values.
43. 333.2 - Conversion Specifier
d, i Converts an int argument to signed decimal format. o Converts an unsigned int argument to unsigned octal format. u Converts an unsigned int argument to unsigned decimal format (giving a number in the range 0 to 4,294,967,295). x, X Converts an unsigned int argument to unsigned hexadecimal format (with or without a leading 0x). The letters 'abcdef' are used for the x conversion; the letters 'ABCDEF' are used for the X conversion. f Converts a float or double argument to the format [-]mmm.nnnnnn. The number of n's is equal to the precision specification. If no precision is specified, the default is 6. If the precision is 0 and the # flag is specified, the decimal point appears but no n's appear. If the precision is 0 and the # flag is not specified, the decimal point also does not appear. If a decimal point appears, at least one digit appears before it. The value is rounded to the appropriate number of digits. e, E Converts a float or double argument to the format [-]m.nnnnnnE[+|-]xx. The number of n's is specified by the precision. If no precision is specified, the default is 6. If the precision is explicitly 0 and the # flag is specified, the decimal point appears but no n's appear. If the precision is explicitly 0 and the # flag is not specified, the decimal point also does not appear. An 'e' is printed for e conversion; an 'E' is printed for E conversion. The exponent always contains at least two digits. If the value is 0, the exponent is 0. g, G Converts a float or double argument to format f or e (or E if the G conversion specifier is used), with the precision specifying the number of significant digits. If the precision is 0, it is taken as 1. c Converts an int argument to an unsigned char, and writes the resulting character (null characters are ignored). C Converts a wchar_t argument to an array of bytes representing the character, and writes the resulting character. If the field width is specified and the resulting character occupies fewer bytes than the field width, it will be padded to the given width with space characters. If the precision is specified, the behavior is undefined. s Requires an argument that is a pointer to an array of characters of type char. The argument is used to write characters until a null character is encountered or until the number of characters indicated by the precision specification is exhausted. If the precision specification is 0 or omitted, all characters up to a null are output. S Converts an array of wide-character codes to multibyte characters, and writes the multibyte characters. Requires an argument that is a pointer to an array of wide characters of type wchar_t. Characters are written until a null wide character is encountered or until the number of bytes indicated by the precision specification is exhausted. If the precision specification is omitted or is greater than the size of the array of converted bytes, the array of wide characters must be terminated by a null wide character. p Requires an argument that is a pointer to void. The value of the pointer is output as a hexadecimal character. n Requires an argument that is a pointer to an integer. The integer is assigned the number of characters written to the output stream so far by this call to the formatted output function. No argument is converted. % Writes out the percent symbol. No conversion is performed. The complete conversion specification would be %%.
43.334 - sqrt
Returns the square root of its argument. Syntax: #include <math.h> double sqrt(double x);
43.335 - srand
Initializes the pseudorandom number generator. Syntax: #include <math.h> void srand(unsigned int seed);
43.336 - srand48
Initializes a 48-bit random number generator. Syntax: #include <stdlib.h> void srand48 (long int seed_val);
43.337 - srandom
Uses its argument as a seed for a new sequence of pseudorandom numbers to be returned by subsequent calls to the random function. Syntax: int srandom (unsigned seed);
43.338 - sscanf
Performs formatted input from a character string in memory. Syntax: #include <stdio.h> int sscanf(const char *string, const char *format_string,...); where the ... represents optional expressions that are pointers to objects whose resultant types correspond to conversion specifications given in the format_string. If no conversion specifications are given, you can omit the input pointers. Otherwise, the function calls must have at least as many input pointers as there are conversion specifications, and the conversion specifications must match the types of the input pointers. Conversion specifications are matched to input sources in left-to-right order. The format string for the input of information can include three kinds of items: o White-space characters (spaces, tabs, and new-line characters), which match optional white-space characters in the input field. o Ordinary characters (not %), which must match the next nonwhite-space character in the input. o Conversion specifications, which govern the conversion of the characters in an input field and their assignment to an object indicated by a corresponding input pointer. A conversion specification consists of the following characters, in the order listed: o A percent character (%) or the sequence %n$ (where n is an integer). The sequence %n$ denotes that the conversion is applied to the nth input pointer listed, where n is a decimal integer between [1, NL_ARGMAX] (see the <limits.h> header file). For example, a conversion specification beginning %5$ means that the conversion will be applied to the 5th input pointer listed after the format specification. The sequence %$ is invalid. If the conversion specification does not begin with the sequence %n$ the conversion specification is matched to its input pointer in left-to-right order. You should only use one type of conversion specification (% or %n$) in a format specification. o One or more optional characters o A conversion specifier.
43. 338.1 - Optional character
* Assignment-suppressing character. field width Nonzero decimal integer that specifies the maximum field width. h, l, or L Precede a conversion specifier of d, i, or n with an h if the corresponding argument is a pointer to short int rather than a pointer to int, or with an l (lowercase ell) if it is a pointer to long int. Similarly, precede a conversion specifier of o, u, or x with an h if the corresponding argument is a pointer to unsigned short int rather than a pointer to unsigned int, or with an l (lowercase ell) if it is a pointer to unsigned long int. Finally, precede a conversion specifier of e, f, or g with an l (lowercase ell) if the corresponding argument is a pointer to double rather than a pointer to float, or with an L if it is a pointer to long double. If an h, l, or L appears with any other conversion specifier, the behavior is undefined.
43. 338.2 - Conversion Specifier
d Expects a decimal integer in the input whose format is the same as expected for the subject sequence of the strtol function with the value 10 for the base argument. The corresponding argument must be a pointer to int. i Expects an integer whose type is determined by the leading input characters. For example, a leading 0 is equated to octal, a leading 0X is equated to hexadecimal, and all other forms are equated to decimal. The corresponding argument must be a pointer to int. o Expects an octal integer in the input (with or without a leading 0). The corresponding argument must be a pointer to int. u Expects a decimal integer in the input whose format is the same as expected for the subject sequence of the strtoul function with the value 10 for the base argument. x Expects a hexadecimal integer in the input (with or without a leading 0x). The corresponding argument must be a pointer to unsigned int. c Expects a single byte in the input. The corresponding argument must be a pointer to char. If a field width precedes the c conversion specifier, the number of characters specified by the field width is read. In this case, the corresponding argument must be a pointer to an array of char. C Expects a multibyte character in the input which is converted into a wide character code. The corresponding argument must be a pointer to type wchar_t. If a field width precedes the C conversion specifier, the number of characters specified by the field width is read; in this case, the corresponding argument must be a pointer to array of wchar_t. s Expects a sequences of bytes in the input. The corresponding argument must be a pointer to an array of characters that is large enough to contain the sequence plus a terminating null character, which is added automatically. The input field is terminated by a space, tab, or new-line character. S Expects a sequence of multibyte characters in the input, which are converted to wide-character codes. The corresponding argument must be a pointer to an array of wide characters (type wchar_t) that is large enough to contain the sequence plus a terminating null wide-character code which is added automatically. The input field is terminated by a space, tab, or new-line character. e,f,g Expects a floating-point number in the input. The corresponding argument must be a pointer to float. The input format for floating-point numbers is: [+|-]nnn[radix][ddd][{E|e}[+|-]nn] The n's and d's are decimal digits (as many as indicated by the field width minus the signs and the letter E). The radix character is defined in the current locale. [...] Expects a nonempty sequence of characters that is not delimited by a white-space character. The brackets enclose a set of characters (the scanset) expected in the input sequence. Any character in the input sequence that does not match a character in the scanset terminates the character sequence. The corresponding argument must be a pointer to an array of characters. All characters between the brackets comprise the scanset, unless the first character after the left bracket is a circumflex (^). In this case, the scanset contains all characters other than those that appear between the circumflex and the right bracket; that is, any character that does appear between the circumflex and the right bracket will terminate the input character sequence. If the conversion specifier begins with [] or [^], the right-bracket character is in the scanset and the next right-bracket character is the matching right bracket that ends the specification; otherwise, the first right bracket character ends the specification. p An argument that is a pointer to void. The input value is interpreted as a hexadecimal value. n No input is consumed. The corresponding argument is a pointer to an integer. The integer is assigned the number of characters read from the input stream so far by this call to the formatted input function. Execution of a %n directive does not increment the assignment count returned when the formatted input function completes execution. % Matches a single percent symbol. No conversion or assignment takes place. The complete conversion specification would be %%.
43.339 - ssignal
Allows you to specify the action to take when a particular signal is raised. Syntax: #include <signal.h> void (*ssignal (int sig, void (*func) (int,...))) (int,...);
43.340 - [w]standend
Curses Screen Management function and macro that deactivate the boldface attribute for the specified window. The standend macro acts on the stdscr window. Syntax: #include <curses.h> int standend(void); int wstandend(WINDOW *win);
43.341 - [w]standout
Curses Screen Management function and macro that activate the boldface attribute of the specified window. The standout macro acts on the stdscr window. Syntax: #include <curses.h> int standout(void); int wstandout(WINDOW *win);
43.342 - stat
Accesses information about the file descriptor or the file specification. Syntax: #include <stat.h> int stat(const char *file_spec, struct stat *buffer); (POSIX-1) int stat(const char *file_spec, struct stat *buffer,...); (Compaq C Extension)
43.343 - strcasecmp
Compares two 7 bit ASCII strings with the case insensitive. Syntax: #include <strings.h> int strcasecmp (const char *s1, const char *s2);
43.344 - strcat
Concatenates str_2, including the terminating null character, to the end of str_1. Syntax: #include <string.h> char *strcat(char *str_1, const char *str_2);
43.345 - strchr
Returns the address of the first occurrence of a given character in a null-terminated string. The terminating null character is considered to be part of the string. Syntax: #include <string.h> char *strchr(const char *string, int character);
43.346 - strcoll
Compares two strings and returns an integer that indicates if the strings differ and how they differ. The function uses the collating information in the LC_COLLATE category of the current locale to determine how the comparison is performed. Syntax: #include <string.h> int strcoll(const char *str_1, const char *str_2);
43.347 - strcmp
Compares two ASCII character strings and returns a negative, 0, or positive integer, indicating that the ASCII values of the individual characters in the first string are less then, equal to, or greater than the values in the second string. Syntax: #include <string.h> int strcmp(const char *str_1, const char *str_2);
43.348 - strcpy
Copies all of source_str, including the terminating null character, into destination_str. Syntax: #include <string.h> char *strcpy(char *destination_str, const char *source_str);
43.349 - strcspn
Returns the length of the prefix of a string that consists entirely of characters that are not in a specified set of characters. Syntax: #include <string.h> size_t strcspn(const char *str, const char *charset);
43.350 - strdup
Finds and points to a duplicate string. Syntax: #include <string.h> char *strdup (const char *s1);
43.351 - strerror
Maps the error number in error_code to a locale-dependent error message string. Syntax: #include <string.h> char *strerror (int error_code); (ANSI C) char *strerror (int error_code [,int vms_error_code]); (Compaq C Extension) {Relaxed ANSI and VAXC modes only} This function uses the error number in error_code to retrieve the appropriate locale-dependent error message. The contents of the error message strings are determined by the LC_MESSAGES category of the program's current locale. For Compaq C (not Compaq C++) in relaxed ANSI mode or VAXC mode, strerror has a second argument (vms_error_code), which is used in the following way: o If error_code is EVMSERR and there is a second argument, then that second argument is used as the VAXC$ERRNO value. o If error_code is EVMSERR and there is no second argument, look at VAXC$ERRNO to get the OpenVMS error condition. Use of the second argument is not included in the ANSI C definition of strerror and is, therefore, not portable.
43.352 - strfmon
Converts a number of monetary values into a string. The conversion is controlled by a format string. Syntax: #include <monetary.h> size_t strfmon (char *s, size_t maxsize, const char *format, ...);
43.353 - strftime
Uses date and time information stored in a tm structure to create an output string. The format of the output string is controlled by a format string. Syntax: #include <time.h> size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr);
43.354 - strlen
Returns the length of a string of ASCII characters. The returned length does not include the terminating null character (\0). Syntax: #include <string.h> size_t strlen(const char *str);
43.355 - strncasecmp
Compares two 7 bit ASCII strings for case and size, with case insensitivity. Syntax: #include <strings.h> int strncasecmp (const char *s1, const char *s2, size_t n);
43.356 - strncat
Appends not more than maxchar characters from str_2 to the end of str_1. Syntax: #include <string.h> char *strncat(char *str_1, const char *str_2, size_t maxchar);
43.357 - strncmp
Compares not more than maxchar characters of two ASCII character strings and returns a negative, 0, or positive integer, indicating that the ASCII values of the individual characters in the first string are less than, equal to, or greater than the values in the second string. Syntax: #include <string.h> int strncmp(const char *str_1, const char *str_2, size_t maxchar);
43.358 - strncpy
Copies all or part of source_str into destination_str. Syntax: #include <string.h> char *strncpy(char *destination_str, const char *source_str, size_t maxchar);
43.359 - strnlen
Returns the number of bytes in the string pointed to by s. The string length value does not include the terminating null character. The strnlen function counts bytes until the first null byte or until n bytes have been examined. Syntax: #include <string.h> size_t strnlen(const char *s, size_t n);
43.360 - strpbrk
Searches a string for the occurrence of one of a specified set of characters. Syntax: #include <string.h> char *strpbrk(const char *str, const char *charset);
43.361 - strptime
Converts a character string into date and time values stored in a tm structure. Conversion is controlled by a format string. Syntax: #include <time.h> char *strptime (const char *buf, const char *format, struct tm *timeptr);
43.362 - strrchr
Returns the address of the last occurrence of a given character in a null-terminated string. The terminating null character is considered to be part of the string. Syntax: #include <string.h> char *strrchr(const char *string, int character);
43.363 - strsep
Separates strings. Syntax: #include <string.h> char *strsep (char **stringp, char *delim);
43.364 - strspn
Searches a string for the occurrence of a character that is not in a specified set of characters. Syntax: #include <string.h> size_t strspn(const char *str, const char *charset);
43.365 - strstr
Locates the first occurrence in the string pointed to by s1 of the sequence of characters in the string pointed to by s2. Syntax: #include <string.h> char *strstr(const char *s1, const char *s2);
43.366 - strtod
Converts a given string to a double-precision number. Syntax: #include <stdlib.h> double strtod (const char *nptr, char **endptr);
43.367 - strtok
Locates text tokens in a given string. Syntax: #include <string.h> char *strtok (char *s1, const char *s2);
43.368 - strtol
Converts strings of ASCII characters to the appropriate numeric values. Syntax: #include <stdlib.h> long int strtol (const char *nptr, char **endptr, int base);
43.369 - strtoul
Converts the initial portion of the string pointed to by nptr to an unsigned long integer. Syntax: #include <stdlib.h> unsigned long int strtoul (const char *nptr, char **endptr, int base);
43.370 - strxfrm
Changes a string such that the changed string can be passed to the strcmp function and produce the same result as passing the unchanged string to the strcoll function. Syntax: #include <string.h> size_t strxfrm(char *s1, const char *s2, size_t maxchar);
43.371 - subwin
Curses Screen Management routine that creates a new subwindow with numlines lines and numcols columns starting at the coordinates (begin_y, begin_x) on the terminal screen. Syntax: #include <curses.h> WINDOW *subwin(WINDOW *win, int numlines, int numcols, int begin_y, int begin_x);
43.372 - swab
Swaps bytes. Syntax: #include <unistd.h> void swab (const void *src, void *dest, ssize_t nbytes);
43.373 - swprintf
Formats output to an array of wide characters. Syntax: #include <wchar.h> int swprintf (wchar_t *s, size_t n, const wchar_t *format, ...);
43.374 - swscanf
Formats input to a wide string input. Syntax: #include <wchar.h> int swscanf (const wchar_t *s, const wchar_t *format, ...);
43.375 - sysconf
Gets configurable system variables. Syntax: #include <unistd.h> long int sysconf (int name);
43.376 - system
Passes a given string to the host environment to be executed by a command processor. This function is nonreentrant. Syntax: #include <stdlib.h> int system (const char *string);
43.377 - tan
Returns a double value that is the tangent of its radian argument. Syntax: #include <math.h> double tan(double x);
43.378 - tanh
Returns a double value that is the hyperbolic tangent of its double argument. Syntax: #include <math.h> double tanh(double x);
43.379 - telldir
Returns the current location associated with a specified directory stream. Performs operations on directories. Syntax: #include <dirent.h> long int telldir (DIR *dir_pointer);
43.380 - tempnam
Constructs the name for a temporary file. Syntax: #include <stdio.h> char *tempnam (const char *directory, const char *prefix);
43.381 - time
Returns the time elapsed on the system since 00:00:00 January 1, 1970, in seconds. Syntax: #include <time.h> time_t time(time_t *time_location);
43.382 - times
Passes back the accumulated times of the current process and its terminated child processes. This function is nonreentrant. Syntax: #include <times.h> clock_t times (struct tms *buffer); (POSIX-1) void times (tbuffer_t *buffer); (Compatibility)
43.383 - tmpfile
Creates a temporary file that is opened for update. Syntax: #include <stdio.h> FILE *tmpfile(void);
43.384 - tmpnam
Creates a character string that you can use in place of the file-name argument in other function calls. Syntax: #include <stdio.h> char *tmpnam(char *name);
43.385 - toascii
Converts its argument, an 8-bit ASCII character, to a 7-bit ASCII character. Syntax: #include <ctype.h> int toascii(char character);
43.386 - tolower, _tolower
Convert their argument, a character, to lowercase. If the argument is not an uppercase character, it is returned unchanged. Syntax: #include <ctype.h> int tolower(int character); int _tolower(int character);
43.387 - touchwin
Curses Screen Management routine that places the most recently edited version of the specified window on the terminal screen. Syntax: #include <curses.h> int touchwin(WINDOW *win);
43.388 - toupper, _toupper
Convert their argument, a character, to uppercase. If the argument is not a lowercase character, it is returned unchanged. Syntax: #include <ctype.h> int toupper(int character); int _toupper(int character);
43.389 - towctrans
Maps one wide character to another according to a specified mapping descriptor. Syntax: #include <wctype.h> wint_t towctrans (wint_t wc, wctrans_t desc);
43.390 - towlower
Converts the argument, a wide character, to lowercase. If the argument is not an uppercase character, it is returned unchanged. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int towlower(wint_t wc);
43.391 - towupper
Converts the argument, a wide character, to uppercase. If the argument is not a lowercase character, it is returned unchanged. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) int towupper(wint_t wc);
43.392 - truncate
Changes file length to a specified length in bytes. Syntax: #include <unistd.h> int truncate (const char *path, off_t length);
43.393 - ttyname
Returns a pointer to the null-terminated name of the terminal device associated with file descriptor 0, the default input device (stdin). Syntax: #include <unixio.h> char *ttyname(void);
43.394 - tzset
Sets and accesses timezone conversion. Syntax: #include <time.h> void tzset (void): extern int daylight; extern long timezone; extern char *tzname[];
43.395 - ualarm
Sets or changes the timeout of interval timers. Syntax: #include <unistd.h> useconds_t ualarm (useconds_t mseconds, useconds_t interval);
43.396 - umask
Creates a file protection mask that is used when a new file is created and returns the previous mask value. Syntax: #include <stat.h> mode_t umask(mode_t mode_complement);
43.397 - uname
Gets system identification information. Syntax: #include <utsname.h> int uname (struct utsname *name);
43.398 - ungetc
Pushes a character back into the input stream and leaves the stream positioned before the character. Syntax: #include <stdio.h> int ungetc(int character, FILE *file_pointer);
43.399 - ungetwc
Pushes a wide character back into the input stream and leaves the stream positioned before the character. Syntax: #include <wchar.h> wint_t ungetwc(wint_t wc, FILE *file_pointer);
43.400 - unsetenv
Deletes all instances of the variable name pointed to the name from the environment list. Syntax: #include <stdlib.h> void unsetenv (const char *name);
43.401 - usleep
Suspends execution for an interval. Syntax: #include <unistd.h> int usleep (unsigned int mseconds);
43.402 - utime
Sets file access and modification times. Syntax: #include <types.h> int utime (const char *path, const struct utimbuf *times);
43.403 - utimes
Sets file access and modification times. Syntax: #include <time.h> int utimes (const char *path, const struct timeval *times[2]);
43.404 - va_arg
Returns the next item in the argument list. Syntax: #include <stdarg.h> (ANSI C) #include <varargs.h> (Compaq C Extension) type va_arg(va_list ap, type);
43.405 - va count (Compaq C Extension)
Returns the number of longwords in the argument list. Syntax: #include <stdarg.h> OR #include <varargs.h> (Compaq C Extension) void va_count(int *count);
43.406 - va_end
Finishes the varargs or stdarg session. Syntax: #include <stdarg.h> (ANSI C) #include <varargs.h> (Compaq C Extension) void va_end(va_list ap);
43.407 - va_start
Initializes a variable to the beginning of the argument list. Syntax: Nonportable format: #include <varargs.h> (Compaq C Extension) void va_start(va_list ap); Portable format: #include <stdarg.h> (ANSI C) void va_start(va_list ap, parmN);
43.408 - va_start_1
Initializes a variable to the beginning of the argument list. Syntax: #include <varargs.h> (Compaq C Extension) void va_start_1(va_list ap, int offset);
43.409 - VAXC$CRTL_INIT
Allows you to call the Compaq C RTL from other languages. It initializes the run-time environment and establishes both an exit and condition handler. VAXC$CRTL_INIT is a synonym for decc$crtl_init. Either name invokes the same routine. Syntax: #include <signal.h> void VAXC$CRTL_INIT();
43.410 - vaxc$establish
Used to establish an OpenVMS exception handler for a particular routine. This function establishes a special Compaq C RTL exception handler in the routine that called it. This special handler catches all RTL-related exceptions that occur in later routines, and passes on all other exceptions to your handler. Syntax: #include <signal.h> void vaxc$establish(unsigned int (*exception_handler)(void *sigarr, void *mecharr));
43.411 - vfork
Creates an independent child process. This function is nonreentrant. Syntax: #include <unistd.h> _DECC_V4_SOURCE defined: int vfork(void); _DECC_V4_SOURCE not defined: pid_t vfork(void);
43.412 - vfprintf
Prints formatted output based on an argument list. This function is the same as the fprintf function except that instead of being called with a variable number of arguments, it is called with an argument list that has been initialized by the macro va_start (and possibly subsequent va_arg calls). Syntax: #include <stdio.h> int vfprintf (FILE *file_ptr, const char *format, va_list arg);
43.413 - vfwprintf
Writes output to a specified file in wide character format. Syntax: #include <wchar.h> int vfwprintf (FILE *stream, const wchar_t *format, va_list arg);
43.414 - vprintf
Prints formatted output based on an argument list. This function is the same as the printf function except that instead of being called with a variable number of arguments, it is called with an argument list that has been initialized by the macro va_start (and possibly subsequent va_arg calls). Syntax: #include <stdio.h> int vprintf (const char *format, va_list arg);
43.415 - vswprintf
Writes output to a specified file in wide character format. Syntax: #include <wchar.h> int vswprintf (wchar_t *s, size_t n, const wchar_t *format, va_list arg);
43.416 - vwprintf
Writes output to a specified file in wide character format. Syntax: #include <wchar.h> int vwprintf (const wchar_t *format, va_list arg);
43.417 - vsprintf
Prints formatted output based on an argument list. This function is the same as the sprintf function except that instead of being called with a variable number of arguments, it is called with an argument list that has been initialized by the macro va_start (and possibly subsequent va_arg calls). Syntax: #include <stdio.h> int vsprintf (char *str, const char *format, va_list arg);
43.418 - wait
Checks the status of the child process before exiting. A child process is terminated when the parent process terminates. This function is nonreentrant. Syntax: #include <wait.h> pid_t wait(int *status);
43.419 - wait3
Waits for a child process to stop or terminate. Syntax: #include <wait.h> pid_t wait3 (int *status_location, int options, struct rusage *resource_usage);
43.420 - wait4
Waits for a child process to stop or terminate. Syntax: #include <wait.h> pid_t wait4 (pid_t process_id, union wait *status_location, int options, struct rusage *resource_usage);
43.421 - waitpid
Waits for a child process to stop or terminate. Syntax: #include <wait.h> pid_t waitpid (pid_t process_id, int *status_location, int options);
43.422 - wcrtomb
Determines the number bytes needed to represent the multibyte character that corresponds to the specified wide character. Syntax: #include <wchar.h> size_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps);
43.423 - wcscat
Appends the wide character string wstr_2, including the terminating null character, to the end of wstr_1. Syntax: #include <wchar.h> wchar_t *wcscat (wchar_t *wstr_1, const wchar_t *wstr_2)
43.424 - wcschr
Returns the address of the first occurrence of a given wide character in a null-terminated, wide-character string. The terminating null character is considered to be part of the string. Syntax: #include <wchar.h> wchar_t *wcschr (const wchar_t *wstr, wchar_t wc);
43.425 - wcscmp
Compares two wide-character strings. The function returns an integer that indicates if the strings are different and how they differ. Unlike the wcscoll function, wcscmp compares the string based on the binary value of each wide character. Syntax: #include <wchar.h> int wcscmp (const wchar_t *wstr_1, const wchar_t wstr_2);
43.426 - wcscoll
Compares two wide-character strings. The function returns an integer that indicates if the strings differ and how they differ. The function uses the collating information in the LC_COLLATE category of the current locale to determine how the comparison is performed. Syntax: #include <wchar.h> int wcscoll (const wchar_t *ws1, const wchar_t *ws2);
43.427 - wcscpy
Copies the wide-character string source_str, including the terminating null character, into destination_str. Syntax: #include <wchar.h> wchar_t *wcscpy (wchar_t *destination_str, const wchar_t *source_str);
43.428 - wcscspn
Compares the characters in a wide-character string against a set of wide characters. The function returns the length of the initial substring comprised entirely of characters that are not in the set of wide characters. Syntax: #include <wchar.h> size_t wcscspn (const wchar_t *wstr1, const wchar_t *wstr2);
43.429 - wcsftime
Uses date and time information stored in a tm structure to create a wide character output string. The format of the output string is controlled by a format string. Syntax: #include <wchar.h> size_t wcsftime (wchar_t *wcs, size_t maxsize, const char *format, const struct tm *timeptr); (XPG4) size_t wcsftime (wchar_t *wcs, size_t maxsize, const wchar_t *format, const struct tm *timeptr); (ISO C)
43.430 - wcslen
Returns the number of wide characters in a wide-character string. The returned length does not include the terminating null character. Syntax: #include <wchar.h> size_t wcslen (const wchar_t *wstr);
43.431 - wcsncat
Appends wide characters from the wide-character string wstr_2 to the end of wstr_1. Up to a maximum of maxchar characters are appended to wstr_1. Syntax: #include <wchar.h> wchar_t *wcsncat (wchar_t *wstr_1, const wchar_t *wstr_2, size_t maxchar);
43.432 - wcsncmp
Compares no more than maxchar characters of two wide-character strings. The function returns an integer that indicates if the strings are different and how they differ. Syntax: #include <wchar.h> int wcsncmp (const wchar_t *wstr_1, const wchar_t *wstr_2, size_t maxchar);
43.433 - wcsncpy
Copies up to a maximum of maxchar wide characters from source_str into destination_str. Syntax: #include <wchar.h> wchar_t *wcsncpy (wchar_t *destination_str, const wchar_t *source_str, size_t maxchar);
43.434 - wcspbrk
Searches a wide-character string for the first occurrence of one of a specified set of wide characters. Syntax: #include <wchar.h> wchar_t *wcspbrk const wchar_t *wstr, const wchar_t *charset);
43.435 - wcsrchr
Returns the address of the last occurrence of a given wide character in a null-terminated, wide-character string. The terminating null character is considered to be part of the string. Syntax: #include <wchar.h> wchar_t *wcsrchr (const wchar_t *wstr, wchar_t wc);
43.436 - wcsrtombs
Converts a sequence of wide characters to a corresponding sequence of multibyte characters, including a terminating null character. Syntax: #include <wchar.h> size_t wcsrtombs (char *dst, const wchar_t **src, size_t len, mbstate_t *ps);
43.437 - wcsspn
Compares the characters in a wide-character string against a set of wide characters. The function returns the length of the initial substring comprised entirely of characters in the set of wide characters. Syntax: #include <wchar.h> size_t wcsspn (const wchar_t *wstr1, const wchar_t *wstr2);
43.438 - wcsstr
Locates the first occurence of a wide character sequence specified in one string to wide character sequence in another string. Syntax: #include <wchar.h> wchar_t *wcsstr (const wchar_t *s1, const wchar_t *s2);
43.439 - wcstod
Converts a given wide-character string to a double-precision number. Syntax: #include <wchar.h> double wcstod (const wchar_t *nptr, wchar_t **endptr);
43.440 - wcstok
Locates text tokens in a given wide-character string. The text tokens are delimited by one or more wide characters from a specified separator string. This function keeps track of its position in the wide-character string between calls and, as successive calls are made, the function works through the wide-character string, identifying the text token following the one identified by the previous call. The ptr argument is used only with the ISO C format. It is a caller-provided w_char pointer into which wcstok stores information necessary for it to continue scanning the same wide string. When ws1 is NULL, ptr is used. When ws1 is not NULL, ptr is ignored. Syntax: #include <wchar.h> wchar_t *wcstok wchar_t *ws1, const wchar_t *ws2); (XPG4 Standard) wchar_t *wcstok wchar_t *ws1, const wchar_t *ws2, wchar_t **ptr); (ISO C Standard)
43.441 - wcstol
Converts a wide character string, in a given base, to a long integer value. Syntax: #include <wchar.h> long int wcstol (const wchar_t *nptr, wchar_t **endptr, int base);
43.442 - wcstombs
Converts a sequence of wide-character codes to a sequence of multibyte characters. Syntax: #include <stdlib.h> size_t wcstombs(char *s, const wchar_t *pwcs, size_t n);
43.443 - wcstoul
Converts the initial portion of the wide-character string pointed to by nptr to an unsigned long integer. Syntax: #include <wchar.h> unsigned long int wcstoul(const wchar_t *nptr, wchar_t **endptr, int base);
43.444 - wcswcs
Locates the first occurrence in the string pointed to by wstr1 of the sequence of wide characters in the string pointed to by wstr2. Syntax: #include <wchar.h> wchar_t *wcswcs (const wchar_t *wstr1, const wchar_t *wstr2);
43.445 - wcswidth
Determines the number of printing positions on a display device that are required for a wide-character string. Syntax: #include <wchar.h> int wcswidth (const wchar_t *pwcs, size_t n);
43.446 - wcsxfrm
Changes a wide-character string such that the changed string can be passed to the wcscmp function and produce the same result as passing the unchanged string to the wcscoll function. Syntax: #include <wchar.h> size_t wcsxfrm (wchar_t *ws1, const wchar_t *ws2, size_t maxchar);
43.447 - wctob
Determines if a character is a valid single byte multibyte character in the initial shift state. Syntax: #include <stdio.h> #include <wchar.h> int wctob (wint_t c);
43.448 - wctomb
Converts a wide character to its multibyte character representation. Syntax: #include <stdlib.h> int wctomb(char *s, wchar_t wchar);
43.449 - wctrans
Verifies that a specified string value has a valid wide character equivalent. Syntax: #include <wctype.h> wctrans_t wctrans (const char *property);
43.450 - wctype
Used to define a property. The value returned by this function is used in calls to the iswctype function. Syntax: #include <wctype.h> (ISO C Standard) #include <wchar.h> (XPG4 Standard) wctype_t wctype (const char *property);
43.451 - wcwidth
Determines the number of printing positions on a display device required for a wide character. Syntax: #include <wchar.h> int wcwidth (wchar_t wc);
43.452 - wmemchr
Finds the first occurence of wide characters in a given object. Syntax: #include <wchar.h> wchar_t wmemchr (const wchar_t *s, wchar_t c, size_t n);
43.453 - wmemcmp
Compares the first occurance of wide characters in two objects. Syntax: #include <wchar.h> int wmemcmp (const wchar_t *s1, const wchar_t *s2, size_t n);
43.454 - wmemcpy
Copies a specified number of wide characters from one array (source_str) to another (destination_str). Syntax: #include <wchar.h> wchar_t wmemcpy (wchar_t *destination_str, const wchar_t *source_str, size_t n);
43.455 - wmemmove
Copies a specified number of wide characters from one array to another, using a temporary array. Syntax: #include <wchar.h> wchar_t wmemmove (wchar_t *destination_str, const wchar_t *source_str, size_t n);
43.456 - wmemset
Sets a specified value to a specified number of wide characters in an object. Syntax: #include <wchar.h> wchar_t wmemset (wchar_t *s, wchar_t c, size_t n);
43.457 - wprintf
Performs formatted output from the standard output (stdout). See Chapter 2 for information on format specifiers. Syntax: #include <wchar.h> int wprintf (const wchar_t *format, ...);
43.458 - wrapok
Curses macro which, in the UNIX* system environment, allows the wrapping of a word from the right border of the window to the beginning of the next line. This macro is provided only for UNIX compatibility. Syntax: #include <curses.h> wrapok(WINDOW *win, bool boolf); ---------- * UNIX is a trademark of The Open Group.
43.459 - write
Writes a specified number of bytes from a buffer to a file. Syntax: #include <unistd.h> int write(int file_descriptor, void *buffer,int nbytes); (POSIX-1) int write(int file_descriptor, void *buffer,int nbytes); (Compatibility)
43.460 - writev
Writes to a file. Syntax: #include <unistd.h> ssize_t writev (int fildes, const struct iovec *iov, int iovcnt);
43.461 - wscanf
Performs formatted input from the standard input (stdin), interpreting it according to the format specification. See Chapter 2 for information on format specifiers. Syntax: #include <wchar.h> int wscanf (const wchar_t *format, ...);
44 - Release Notes |
The release notes for Compaq C are contained in the following files: SYS$HELP:CC064.RELEASE_NOTES SYS$HELP:CC064_RELEASE_NOTES.PS
45 - Socket Routines |
Socket routines are used in writing Internet application programs for the DEC TCP/IP Services for OpenVMS product (formerly the VMS/ULTRIX Connection).
45.1 - accept
Accepts a connection on a socket. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int accept(int s, struct sockaddr *addr, int *addrlen); _DECC_V4_SOURCE not defined: int accept(int s, struct sockaddr *addr, size_t *addrlen);
45.2 - bind
Binds a name to a socket. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int bind(int s, struct sockaddr *name, int namelen); _DECC_V4_SOURCE not defined: int bind(int s, const struct sockaddr *name, size_t namelen);
45.3 - close
Closes a connection and deletes a socket descriptor. Syntax: #include <unixio.h> int close(s);
45.4 - connect
Initiates a connection on a socket. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int connect(int s, struct sockaddr *name, int namelen); _DECC_V4_SOURCE not defined: int connect(int s, const struct sockaddr *name, size_t namelen);
45.5 - decc$get_sdc
Returns the socket device channel associated with a socket descriptor for direct use with the DEC TCP/IP Services for OpenVMS product (formerly the VMS/ULTRIX Connection). vaxc$get_sdc is a synonym for decc$get_sdc. Either name invokes the same routine. Syntax: #include <socket.h> short int decc$get_sdc(int s);
45.6 - endhostent
Ends retrieval of network host entries and closes the network host file. Syntax: #include <netdb.h> void endhostent (void);
45.7 - endnetent
Closes the networks database file. Syntax: #include <netdb.h> void endnetent (void);
45.8 - getpeername
Returns the name of the connected peer. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int getpeername(int s, struct sockaddr *name, int *namelen); _DECC_V4_SOURCE not defined: int getpeername(int s, struct sockaddr *name, size_t *namelen);
45.9 - endprotoent
Closes the protocols database file. Syntax: #include <netdb.h> void endprotoent (void);
45.10 - endservent
Closes the network services database file. Syntax: #include <netdb.h> void endservent (void);
45.11 - gethostbyaddr
Searches the host database sequentially from the beginning of the database for a host record with a given address. Syntax: #include <netdb.h> struct hostent *gethostbyaddr(char *addr, int len, int type);
45.12 - gethostbyname
Searches the host database sequentially from the beginning of the database for a host record with a given name or alias. Syntax: #include <netdb.h> struct hostent *gethostbyname(char *name);
45.13 - gethostent
Opens the network host entry by name from the network host database file. Syntax: #include <netdb.h> struct hostent *gethostent (void);
45.14 - gethostname
Returns the name currently associated to the host. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int gethostname(char *name, int namelen); _DECC_V4_SOURCE not defined: int gethostname(char *name, size_t namelen);
45.15 - getnetbyaddr
Searches the network database sequentially from the beginning of the database for a network record with a given address. Syntax: #include <netdb.h> struct netent *getnetbyaddr(long net, int type);
45.16 - getnetbyname
Searches the network database sequentially from the beginning of the database for a network record with a given name or alias. Syntax: #include <netdb.h> struct netent *getnetbyname(char *name);
45.17 - getnetent
Gets a network file entry from the networks database file. Syntax: #include <netdb.h> struct netent *getnetent (void);
45.18 - getprotobyname
Searches the protocols database until a matching protocol name is found or until an EOF is encountered. Syntax: #include <netdb.h> struct protoent *getprotobyname(char *name);
45.19 - getprotobynumber
Searches the protocols database until a matching protocol number is found or until an EOF is encountered. Syntax: #include <netdb.h> struct protoent *getprotobynumber(int *proto);
45.20 - getprotoent
Gets a protocol database entry from the protocols database file. Syntax: #include <netdb.h> struct protoent *getprotonet (void);
45.21 - getservbyname
Gets information on the named service from the network services database. It searches the services database until a matching service name is found or until an EOF is encountered. If a non-null protocol name is also supplied, searches must also match the protocol. Syntax: #include <netdb.h> struct servent *getservbyname(char *name, char *proto);
45.22 - getservbyport
Gets information on the specified port from the network services database. It searches the services database until a matching port is found or until an EOF is encountered. If a non-null protocol name is also supplied, searches must also match the protocol. Syntax: #include <netdb.h> struct servent *getservbyport(int port, char *proto);
45.23 - getservent
Gets a services file entry from the network services database file. Syntax: #include <netdb.h> struct servent *getservent (void);
45.24 - getsockname
Returns the name associated with a socket. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int getsockname(int s, struct sockaddr *name, int *namelen); _DECC_V4_SOURCE not defined: int getsockname(int s, struct sockaddr *name, size_t *namelen);
45.25 - getsockopt
Returns the options set on a socket. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int getsockopt(int s, int level, int optname, char *optval, int *optlen); _DECC_V4_SOURCE not defined: int getsockopt(int s, int level, int optname, void *optval, size_t *optlen);
45.26 - herror
Writes a message explaining a routine error. Syntax: #include <netdb.h> extern int sys_nerr; extern int h_errno; void herror (const char *string);
45.27 - hostalias
Searches for host aliases associated with a name. Syntax: #include <types.h> #include <in.h> #include <namser.h> #include <resolv.h> char *hostalias (const char *name);
45.28 - hstrerror
Accesses message explaining routine errors. Syntax: #include <string.h> char *hstrerror (int errnum);
45.29 - htonl
Converts longwords from host to network byte order. Syntax: #include <in.h> unsigned long int htonl(unsigned long int hostlong);
45.30 - htons
Converts short integers from host to network byte order. Syntax: #include <in.h> unsigned short int htons(unsigned short int hostshort);
45.31 - inet_addr
Converts Internet addresses in text form into numeric (binary) Internet addresses. Syntax: #include <in.h> #include <inet.h> int inet_addr(char *cp);
45.32 - inet_lnaof
Returns the local network address portion of an Internet address. Syntax: #include <in.h> #include <inet.h> int inet_lnaof(struct in_addr in);
45.33 - inet_makeaddr
Returns an Internet address given a network address and a local address on that network. Syntax: #include <in.h> #include <inet.h> struct in_addr inet_makeaddr(int net, int lna) ;
45.34 - inet_netof
Returns the Internet network address portion of an Internet address. Syntax: #include <in.h> #include <inet.h> int inet_netof(struct in_addr in);
45.35 - inet_network
Converts a text string representing an Internet network address in the standard Internet "." notation into an Internet network address in network byte order. Syntax: #include <in.h> #include <inet.h> int inet_network(char *cp);
45.36 - inet_ntoa
Converts an Internet address into a text string representing the address in the standard Internet "." notation. Syntax: #include <in.h> #include <inet.h> char *inet_ntoa(struct in_addr in);
45.37 - ioctl
Controls socket operations only. Syntax: #include <ioctl.h> int ioctl (int d, unsigned long request, void *arg);
45.38 - listen
Sets the maximum limit of outstanding connection requests for a socket that is connection oriented. Syntax: int listen(int s, int backlog);
45.39 - ntohl
Converts longwords from network to host byte order. Syntax: #include <in.h> unsigned long int ntohl(unsigned long int netlong) ;
45.40 - ntohs
Converts short integers from network to host byte order. Syntax: #include <in.h> unsigned short int ntohs(unsigned short int netshort);
45.41 - read
Reads bytes from a socket or file and places them in a buffer. Syntax: #include <unixio.h> int read(int d, void *buffer, int nbytes);
45.42 - recv
Receives bytes from a connected socket and places them into a buffer. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int recv(int s, char *buf, int len, int flags); _DECC_V4_SOURCE not defined: ssize_t recv(int s, void *buf, size_t len, int flags);
45.43 - recvfrom
Receives bytes from a socket from any source. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int recvfrom(int s, char *buf, int len, int flags, struct sockaddr *from, int *fromlen); _DECC_V4_SOURCE not defined: ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, size_t *fromlen);
45.44 - recvmsg
Receives bytes on a socket and places them into scattered buffers. Syntax: #include <types.h> #include <socket.h> int recvmsg(int s, struct msghdr msg[], int flags);
45.45 - select
Allows you to poll or check a group of sockets for I/O activity. It can check what sockets are ready to be read or written, or what sockets have a pending exception. Syntax: #include <time.h> _DECC_V4_SOURCE defined: int select(int nfds, int *readfds, int *writefds, int *exceptfds, struct timeval *timeout); _DECC_V4_SOURCE not defined: int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
45.46 - send
Sends bytes through a socket to its connected peer. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int send(int s, char *msg, int len, int flags); _DECC_V4_SOURCE not defined: ssize_t send(int s, const void *msg, size_t len, int flags);
45.47 - sendmsg
Sends gathered bytes through a socket to any other socket. Syntax: #include <types.h> #include <socket.h> int sendmsg(int s, struct msghdr msg[], int flags);
45.48 - sendto
Sends bytes through a socket to any other socket. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int sendto(int s, char *msg, int len, int flags, struct sockaddr *to, int tolen); _DECC_V4_SOURCE not defined: ssize_t sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, size_t tolen);
45.49 - sethostent
Opens, rewinds, and closes the network host database file. Syntax: #include <netdb.h> void sethostent (int stay_open);
45.50 - setnetent
Opens, rewinds, or closes the networks database file. Syntax: #include <netdb.h> void setnetent (int stay_open);
45.51 - setprotoent
Opens, rewinds, or closes the protocols database file. Syntax: #include <netdb.h> void setprotoent (int stay_open);
45.52 - setservent
Opens, rewinds, or closes the network services database. Syntax: #include <netdb.h> void setservent (int stay_open);
45.53 - setsockopt
Sets options on a socket. Syntax: #include <types.h> #include <socket.h> _DECC_V4_SOURCE defined: int setsockopt(int s, int level, int optname, char *optval, int optlen); _DECC_V4_SOURCE not defined: int setsockopt(int s, int level, int optname, const void *optval, size_t optlen);
45.54 - shutdown
Shuts down all or part of a bidirectional connection on a socket. It can disallow further receives, further sends, or both. Syntax: #include <socket.h> int shutdown(int s, int how);
45.55 - socket
Creates an endpoint for communication by returning a special kind of file descriptor called a socket descriptor, which is associated with a DEC TCP/IP Services for OpenVMS socket device channel. Syntax: #include <types.h> #include <socket.h> int socket(int af, int type, int protocol);
45.56 - decc$socket_fd
Returns the socket descriptor associated with a Socket Device Channel for direct use with the Compaq C RTL. Syntax: #include <socket.h> int decc$socket_fd (int channel);
45.57 - vaxc$get_sdc
Returns the socket device channel associated with a socket descriptor for direct use with the DEC TCP/IP Services for OpenVMS product (formerly the VMS/ULTRIX Connection). vaxc$get_sdc is a synonym for decc$get_sdc. Either name invokes the same routine. Syntax: #include <socket.h> short int vaxc$get_sdc(int s);
45.58 - write
Writes a buffer of data to a socket or file. Syntax: #include <unixio.h> int write(int d, void *buffer, int nbytes);
|