cppdirectives are similar to debugging lines, a feature of many Fortran implementations see, “Using debugging lines” (page 80). Like cppdirectives, debugging lines enable the compiler to treat source lines as either compilable statements or comments to be removed before compilation. But debugging lines are nonstandard, available only in
This section discusses how to do the following:
•Invoke cpp from the f90command line.
•Use the
•Save the preprocessed output generated by cpp.
For more information about the cppcommand and the directives it supports, see the cpp (1) man page.
Processing cpp directivesBy default, the f90 command passes source files ending in the .Fextension to cpp. Compiling with the +cpp=yesoption enables you to override this default and cause the f90 driver to pass all source files to cpp. If you do not compile with the +cpp=yes option and if the source file does not have the .F extension, the compiler treats any cpp directives (but not any embedded Fortran statements) as comments and ignores them. (As a language extension, HP Fortran allows comments to begin with the , which is also the prefix character for all cpp directives.)
Consider the following program:
Example 13 Example
PROGRAM main
REAL :: x
WRITE (6, FMT=’(A)’, ADVANCE=’NO’) ‘Enter a real number:
‘READ *, x #ifdef DEBUG
PRINT *, ‘The value of x in main: ‘, x #endif
PRINT *, ‘x =’, double_it(x) END PROGRAM main
REAL FUNCTION double_it(arg) REAL :: arg
#ifdef DEBUG
PRINT *, ‘The value of x in double_it: ‘, arg #endif
double_it = 2.0 * arg END FUNCTION double_it
The program uses the #ifdefand #endifdirectives around PRINTstatements. If the macro DEBUG is defined, cppwill leave the PRINTstatements in the source text that is passed to the compiler; if it is not defined, cpp will remove the statements. You can define the macro in the source text, using the #definedirective; or you can define it on the command line, using the
$ f90 +cpp=yes
Here is the output from a sample run of the executable program created by the preceding command line:
$ a.out
Enter a real number: 3
The value of x in main: 3.0
Using the C preprocessor 61