Tru64 UNIX
Compaq C Language Reference Manual


Previous Contents Index

B.39 The ## Operator (§3.8.3.3)

The ## operator within a macro replacement list causes the two tokens on either side of the operator to be concatenated into a single token.

In common C and VAX C compatibility mode, comments can also concatenate two tokens because in these modes a comment is replaced by a null string after macro invocations.

This behavior is not supported in strict ANSI or default mode, where comments are replaced with a single space.

B.40 Error Directive (§3.8.5)

The #error directive causes an error message to be issued and the compilation to cease.

B.41 Pragma Directive (§3.8.6)

The Standard's approved method of adding extensions to the language is through the addition of pragmas. All unrecognized pragmas are diagnosed with an informational message. Supported pragmas vary across platforms. See your platform-specific Compaq C documentation for more information.

When only preprocessing a file, all pragmas recognized by Compaq C are written unaltered to the output.

B.42 Function Inline Expansion

Function inline expansion eliminates procedure-call overhead and allows general optimization methods to apply across the expanded code. Function inlining has advantages over macros in that arguments are evaluated only once, parentheses need not be overused to avoid problems with precedence, and the actual expansion can be controlled from the command line.

The following pragmas are provided to control function inline expansion:


#pragma inline (function_name [,function_name....]) 
#pragma noinline (function_name [,function_name....]) 

If a function is named in an inline directive, calls to it are expanded as inline code, if the function has the following properties:

Inline functions have the following properties:

B.43 Linkage Pragmas

Compaq C supports the #pragma linkage and #pragma use_linkage preprocessor directives on OpenVMS Alpha systems.

These pragmas are used for defining special linkage characteristics and to associate these linkage characteristics with functions. See your platform-specific Compaq C documentation for more information.

B.44 Other Pragmas

The following pragmas are provided for VAX C compatibility mode only:


        #pragma dictionary CDD_path 
        #pragma module title ident 

These pragmas correspond to the #dictionary and #module directives, respectively.

See your platform-specific Compaq C documentation for additional pragmas supported on your system.


Appendix C
ASCII Equivalence Table

Figure C-1 shows the ASCII character set. Each character's octal, decimal, and hexadecimal value is shown.

Figure C-1 ASCII Equivalence Chart



Appendix D
Common C Extensions Supported by Compaq C

Compaq C supports several common C (old-style C) extensions to ANSI-standard C. These extensions are recognized only when the common C compatibility option is used on the compiler command line. The common C extensions allow you to use the c89 compiler to compile code originally written for the portable C compiler (pcc).

The following sections describe the common C extensions available with the common C compatibility option. Extensions to the ANSI-standard C language are divided into two categories:

D.1 Extensions Compatible with ANSI C

Note

1 Parameters to the function main() are only checked in strict ANSI mode.

D.2 Extensions Incompatible with ANSI C


Appendix E
VAX C Extensions Supported by Compaq C

Compaq C supports several VAX C extensions to ANSI-standard C. These extensions are recognized only when the VAX C compatibility option is used on the compiler command line. The VAX C extensions allow you to use the Compaq C compiler to compile code originally written for the VAX C compiler.

The following sections describe the VAX C extensions available with the VAX C compatibility option. Extensions to the ANSI-standard C language are divided into two categories:

E.1 Extensions Compatible with ANSI C

Note

1 Parameters to the function main() are only checked in strict ANSI mode.

E.2 Extensions Incompatible with ANSI C


Index Contents
[an error occurred while processing this directive]