带你走进Cflow (四)·使用 ASCII 码来生成流图

目录

1、运行预处理器

2、使用 ASCII 码来生成流图

3、交叉引用输出


1、运行预处理器

        cflow 可以在分析之前预处理输入文件,与 cc 在编译之前做的工作一样。这样做可以允许 cflow 准确的处理所有的符号声明,这样就避免了使用--symbol 对特使符号做必要的定义。使用--cpp (--preprocess)选项可以使能预处理功能。对我们的样例 d.c,这种模式输出如下:

$ 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()

        对比这个图和第 5 章没有使用--cpp 选项的结果。就像你看到的一样,S_ISDIR 不见了。宏被展开了。现在试着运行 cflow --cpp --number -i x d.c 并比较与之对应的没有使用预处理的图。你将会看到不使用--symbol 选项也能生成正确的结果。默认情况下--cpp 运行/usr/bin/cpp。如果你希望运行其他预处理命令,可以在参数中用后接等号后的符号指定它。比如,cflow --cpp='c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光の尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值