Use of the C Preprocessor
The C programming language used for defining Solaris system interfaces includes a
preprocessor that performs a set of initial steps in C program compilation.
The C preprocessor is commonly used to define macro substitutions where one
token in a C program is replaced with another predefined set of
tokens, or to include copies of system header files. You can use
the C preprocessor in conjunction with your D programs by specifying the
dtrace -C option. This option causes dtrace to first execute the cpp(1)
preprocessor on your program source file and then pass the results to
the D compiler. The C preprocessor is described in more detail in
The C Programming Language.
The D compiler automatically loads the set of C type descriptions associated
with the operating system implementation, but you can use the preprocessor to
include other type definitions such as types used in your own C
programs. You can also use the preprocessor to perform other tasks such
as creating macros that expand to chunks of D code and other
program elements. If you use the preprocessor with your D program, you
may only include files that contain valid D declarations. Typical C header
files include only external declarations of types and symbols, which will be
correctly interpreted by the D compiler. The D compiler cannot parse C
header files that include additional program elements like C function source code
and will produce an appropriate error message.