|
|
HP C
|
Previous | Contents | Index |
To list the names of system header files, use the following commands:
$ LIBRARY/LIST SYS$LIBRARY:SYS$STARLET_C.TLB (OpenVMS Version 7.1 and higher) $ LIBRARY/LIST SYS$LIBRARY:DECC$RTLDEF.TLB $ DIR SYS$COMMON:[DECC$LIB.REFERENCE.SYS$STARLET_C]*.H; $ DIR SYS$COMMON:[DECC$LIB.REFERENCE.DECC$RTLDEF]*.H; $ DIR SYS$LIBRARY:*.H; |
These commands list, respectively:
The SYS$COMMON:[DECC$LIB.REFERENCE.DECC$RTLDEF] and SYS$COMMON:[DECC$LIB.REFERENCE.SYS$STARLET_C] directories are only reference areas for your viewing. They are created during the compiler installation from the content of the text libraries. By default, the compiler searches only the text library files for headers; it does not search these reference directories. |
Be aware that OpenVMS VAX operating systems prior to Version 7.1 do not have a file named SYS$LIBRARY:SYS$STARLET_C.TLB. For these older versions of the operating system, the STARLET header files are generated during HP C installation and placed in SYS$LIBRARY:DECC$RTLDEF.TLB and also in both SYS$COMMON:[DECC$LIB.REFERENCE.DECC$RTLDEF] and SYS$COMMON:[DECC$LIB.REFERENCE.SYS$STARLET_C].
HP C has two complementary qualifiers that control which dialect of C is to be recognized by the compiler, and which messages are generated:
The /STANDARD qualifier causes the compiler to issue only those warnings appropriate for the dialect of C being compiled. For example, VAX C compatibility mode (/STANDARD=VAXC) does not issue warnings against VAX C extensions, while ANSI C mode does.
To generate a list of all messages that are in effect at the start of compilation, specify /LIST/SHOW=MESSAGES. For each message, the identifier, severity, and message text are shown. To also show the message description and user action for each message listed, specify /LIST/SHOW=MESSAGES/WARN=VERBOSE.
The HP C compiler for OpenVMS systems provides several dialects of C, which are controlled by the /STANDARD qualifier:
/STANDARD=C99 is not fully supported on VAX systems. Specifying /STANDARD=C99 on OpenVMS VAX systems produces a warning and puts the compiler into /STANDARD=RELAXED mode. |
With one exception, the /STANDARD qualifier options are mutually exclusive. Do not combine them. The exception is that you can specify /STANDARD=ISOC94 with any other option except VAXC.
HP C modules compiled in different modes can be linked and executed together.
The /STANDARD qualifier is further described in Section 1.3.4.
Also see the __HIDE_FORBIDDEN_NAMES predefined macro ( Section 6.1.7).
The /STANDARD=MS qualifier instructs the HP C compiler to interpret your source code according to certain language rules followed by the C compiler provided with the Microsoft Visual C++ compiler product. However, compatibility with this implementation is not complete. The following sections describe the compatibility situations that HP C recognizes. In most cases, these situations consist of relaxing a standard behavior and suppressing a diagnostic message.
Allow a declaration of a structure with no name within another structure. You can reference all members of the inner structure as members of the named outer structure. This is similar to the C++ treatment of nested unions lacking a name, but extended to both structures and unions. A similar capability is provided by the VAX C variant_struct and variant_union types.
For example:
struct{ struct{ int a; int b; }; /*No name here */ int c; }d; /* d.a, d.b, and d.c are valid member names. */ |
Allow a static function declaration in block scope (that is, inside another function).
For example:
f(){ static int a(int b); } |
Standard C does not allow the & operator to produce an lvalue expression. The Microsoft relaxation allows & to produce an lvalue in certain cases.
For example:
int *a, *b; f() { &*a=b; } |
Treat the char type as either signed char or unsigned char , depending on the default in effect.
For example, a pointer to char can be assigned to a pointer to signed char , assuming the command-line default of /NOUNSIGNED_CHAR:
signed char *a; char *b; f() { b=a; } |
Suppress warning messages for declarations that contain two semicolons. (That is, allow completely empty declarations at file scope.)
For example:
int a;; |
Suppress warning messages for declarations that contain a variable name but no type.
For example:
b; |
Ignore any extra comma at the end of the last enumerator in an enumeration declaration.
For example:
enum E {a, b, c,}; /* Ignore the comma after "c". */ |
Allow typedef s that have a type specifier but no identifier name declaring the new type.
For example:
typedef struct { int a; }; |
Suppress warning messages when one of the following unsupported Microsoft pragmas is encountered:
#pragma code_seg #pragma warning |
The following list shows all the command qualifiers and their defaults available with the CC command. A description of each qualifier follows the list.
You can place command qualifiers either on the CC command line itself or on individual file specifications (with the exception of the /LIBRARY qualifier). If placed on a file specification, the qualifier affects only the compilation of the specified source file and all subsequent source files in the compilation unit. If placed on the CC command line, the qualifier affects all source files in all compilation units unless it is overridden by a qualifier on an individual file specification.
Command Qualifiers | Default |
---|---|
/ACCEPT=(option[,option]) | See text. |
/[NO]ANALYSIS_DATA[=file-spec] | /NOANALYSIS_DATA |
/[NO]ANNOTATIONS[=(option,...)] | /NOANNOTATIONS |
/[NO]ANSI_ALIAS | See text. |
/ARCHITECTURE=option | /ARCHITECTURE=GENERIC |
/ASSUME=(option[,...]) | See text. |
/[NO]CHECK[=(option,...)] | /NOCHECK |
/[NO]COMMENTS=option | See text. |
/[NO]CROSS_REFERENCE | /NOCROSS_REFERENCE |
/[NO]DEBUG[=(option[,...])] | /DEBUG=(TRACEBACK, |
NOSYMBOLS) | |
/DEBUG=(TRACEBACK,NOINLINE, | |
NOSYMBOLS) (VAX ONLY) | |
/DECC | See text. |
/[NO]DEFINE=(identifier[=definition][,...]) | /NODEFINE |
/[NO]DIAGNOSTICS[=file-spec] | /NODIAGNOSTICS |
/ENDIAN=option | /ENDIAN=LITTLE |
/[NO]ERROR_LIMIT[=n] | /ERROR_LIMIT=30 |
/EXTERN_MODEL=option | /EXTERN_MODEL=RELAXED_REFDEF |
/[NO]FIRST_INCLUDE=(file[,...]) | /NOFIRST_INCLUDE |
/FLOAT=option | /FLOAT=G_FLOAT (ALPHA ONLY) |
/FLOAT=IEEE_FLOAT (I64 ONLY) | |
/FLOAT=D_FLOAT (VAX ONLY) | |
/GRANULARITY=option | /GRANULARITY=QUADWORD |
/[NO]INCLUDE_DIRECTORY=(pathname[,...]) | /NOINCLUDE_DIRECTORY |
/IEEE_MODE[=option] | /IEEE_MODE=FAST (ALPHA ONLY) |
/IEEE_MODE=DENORM_RESULTS (I64 ONLY) | |
/L_DOUBLE_SIZE=option | /L_DOUBLE_SIZE=128 |
/LIBRARY | See text. |
/[NO]LINE_DIRECTIVES | /LINE_DIRECTIVES |
/[NO]LIST[=file-spec] | /NOLIST (interactive mode) |
/LIST (batch mode) | |
/[NO]MACHINE_CODE[=option] | /NOMACHINE_CODE |
/[NO]MAIN=POSIX_EXIT | /NOMAIN |
/[NO]MEMBER_ALIGNMENT | /MEMBER_ALIGNMENT |
/NOMEMBER_ALIGNMENT (VAX ONLY) | |
/[NO]MMS_DEPENDENCIES=option | /NOMMS_DEPENDENCIES |
/NAMES=(option1,option2) | /NAMES=UPPERCASE,TRUNCATED |
/NESTED_INCLUDE_DIRECTORY[=option] | /NESTED_INCLUDE_DIRECTORY |
=INCLUDE_FILE | |
/[NO]OBJECT[=file-spec] | /OBJECT |
/[NO]OPTIMIZE[=(option[,...])] | /OPTIMIZE |
/PDSC_MASK=option | See text. |
/[NO]PLUS_LIST_OPTIMIZE | /NOPLUS_LIST_OPTIMIZE |
/[NO]POINTER_SIZE=option | /NOPOINTER_SIZE |
/PRECISION[=option] | See text. |
/[NO]PREFIX_LIBRARY_ENTRIES | |
[=(option[,...])] | See text. |
/[NO]PREPROCESS_ONLY[=filename] | /NOPREPROCESS_ONLY |
/[NO]PROTOTYPES[=(option[,...])] | /NOPROTOTYPES |
/PSECT_MODEL=[NO]MULTILANGUAGE | /NOMULTILANGUAGE |
/REENTRANCY=option | /REENTRANCY=TOLERANT |
/REPOSITORY=option | /See text. |
/ROUNDING_MODE=option | /ROUNDING_MODE=NEAREST |
/[NO]SHARE_GLOBALS | /NOSHARE_GLOBALS |
/SHOW[=(option[,...])] | /SHOW=(NOBRIEF, |
NOCROSS_REFERENCE, | |
NODICTIONARY, | |
NOEXPANSION, | |
NOINCLUDE, | |
NOINTERMEDIATE, | |
NOMESSAGE, | |
NOSTATISTICS, | |
NOSYMBOLS, | |
NOTRANSLATION, | |
SOURCE, | |
TERMINAL) | |
/[NO]STANDARD[=(option[,...])] | /NOSTANDARD (equivalent to |
/STANDARD=RELAXED ) | |
/[NO]TIE | /NOTIE |
/[NO]UNDEFINE=(identifier[,...]) | /NOUNDEFINE |
/[NO]UNSIGNED_CHAR | /NOUNSIGNED_CHAR |
/VAXC (VAX ONLY) | See text. |
/[NO]VERSION | /NOVERSION |
/[NO]WARNINGS[=(option[,...])] | /WARNINGS |
/ACCEPT=(option[,option])
Allows the compiler to accept C language syntax that it might not normally accept.HP C accepts slightly different syntax depending upon the compilation mode specified with the /STANDARD qualifier. The /ACCEPT qualifier can fine tune the language syntax accepted by each /STANDARD mode.
The following qualifier options can be specified:
The default values are based upon the settings of the /STANDARD qualifier:
- For /STANDARD=RELAXED, the default is:
/ACCEPT=(VAXC_KEYWORDS,C99_KEYWORDS,NOGCCINLINE,TRIGRAPHS)- For /STANDARD=VAXC, the default is:
/ACCEPT=(VAXC_KEYWORDS,NOC99_KEYWORDS,NOGCCINLINE,NOTRIGRAPHS)- For /STANDARD=COMMON, the default is:
/ACCEPT=(NOVAXC_KEYWORDS,NOC99_KEYWORDS,NOGCCINLINE,NOTRIGRAPHS)- For /STANDARD=C99 or /STANDARD=LATEST, the default is:
/ACCEPT=(NOVAXC_KEYWORDS,C99_KEYWORDS,NOGCCINLINE,TRIGRAPHS)- In all other modes, the default is:
/ACCEPT=(NOVAXC_KEYWORDS,NOC99_KEYWORDS,NOGCCINLINE,TRIGRAPHS)/[NO]ANALYSIS_DATA[=file-spec]
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. The .ANA file is reserved for use with HP layered products. The default is /NOANALYSIS_DATA. For more information, see Appendix C./[NO]ANNOTATIONS[=option]
Controls whether or not the source listing file is annotated with indications of specific optimizations performed or, in some cases, not performed. These annotations can be helpful in understanding the optimization process.If annotations are requested (and the /LISTING qualifier appears on the command line), the source listing section is shifted to the right and annotation numbers are added to the left of source lines. These numbers refer to brief descriptions that appear later in the source listing file.
Select one or more of the /ANNOTATIONS qualifier options shown in Table 1-2.
Previous Next Contents Index
|