利用GCC的预处理器分析包含指令之间的依赖关系

  使用-H参数,cpp -H -I<include-dirs>  <source-file> 2>&1 1>/dev/null | grep <project-include-dir>,
  其中-H参数可以打印#include指令的包含关系的栈,<source-file>是源文件;2>&1是将输出到标准错误的内容重定向到标准输出上,方便后面进行管道操作,而1>/dev/null是将原来输出到标准输出的内容(即预处理器对源文件处理后的结果)丢弃。经过这样的重定向处理后,输出到标准输出的就只有表示#include关系的内容了。grep语句的作用是要
将包含的语言的标准头文件或操作系统的头文件(以#include<..>形式包含的)去掉(输出的是绝对路径,而一般标准库的路径不会包含有特定项目的名称,所以可以过滤掉)。


  包含关系的栈,输出的头文件绝对路径名前面只有一个“.”的,表示是从当前“.c”中包含的,这是第一层包含的;如果第一层所包含的头文件又包含其他头文件,那么紧接着这个包含文件的下面,会以两个点“..”起一行显示该文件包含的其他的头文件的绝对路径名。以此类推,就得到一个包含指令之间的关系栈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值