[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7 Running Preprocessor

Cflow can preprocess input files before analyzing them, the same way cc does before compiling. Doing so allows cflow to correctly process all symbol declarations, thus avoiding the necessity to define special symbols using ‘--symbol’ option, described in the previous chapter. To enable preprocessing, run the utility with ‘--cpp’ (‘--preprocess’) command line option. For our sample file ‘d.c’, this mode gives:

$ cflow --cpp -n d.c
    1 main() <int main (int argc,char **argv) at d.c:85>:
    2     fprintf()
    3     atoi()
    4     printdir() <void printdir (int level,char *name) at d.c:42> (R):
    5         getcwd()
    6         perror()
    7         chdir()
    8         opendir()
    9         readdir()
   10         printf()
   11         ignorent() <int ignorent (char *name) at d.c:28>:
   12             strcmp()
   13         isdir() <int isdir (char *name) at d.c:12>:
   14             stat()
   15             perror()
   16         putchar()
   17         printdir()
                <void printdir (int level,char *name) at d.c:42>
                (recursive: see 4)
   18         closedir()

Compare this graph with the one obtained without ‘--cpp’ option (see sample flowchart). As you see, the reference to S_ISDIR is gone: the macro has been expanded. Now, try running cflow --cpp --number -i x d.c and compare the result with the graph obtained without preprocessing (see x flowchart). You will see that it produces correct results without using ‘--symbol’ option.

By default ‘--cpp’ runs ‘/usr/bin/cpp’. If you wish to run another preprocessor command, specify it as an argument to the option, after an equal sign. For example, cflow --cpp='cc -E' will run the C compiler as a preprocessor.


[ << ] [ < ] [ Up ] [ > ] [ >> ]

This document was generated on March 24, 2021 using texi2html 5.0.