Clang dump AST需要注意的事项

29 篇文章 0 订阅
26 篇文章 0 订阅

Clang dump AST本质上是对一个OC/C/C++源文件编译单元执行编译,即跟编译相关的配置都是要注意相关的参数,比如依赖的头文件的路径,特别编译的源文件依赖的其它路径下的头文件,还有就是C++新特性语法的支持等。
如下是网上容易搜索到的Clang dump AST的使用示例

 clang -Xclang -ast-dump -fsyntax-only  源文件路径

如上默认的参数能正常工作的前提是处理的源文件比较简单,没用特殊的头文件以及新的C++语法特性等

我们来看下使用了C++11的bind语法后,ast dump时出现这类的错误提示(ast dump过程出错后整个AST将是不完整的!!!)

 warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
 error: no member named 'bind' in namespace 'std'

针对这类错误的解决方案是指定C++11语言标准,通过-std参数指定

clang -v -std=c++11 -Xclang -ast-dump -fsyntax-only 源文件路径

注:加-v主要查看当前clang include的头文件是那些
在这里插入图片描述

ast-dump出错后,ast tree是不完整的!
在这里插入图片描述

对于头文件的依赖可以使用 -I参数指定

clang -v -std=c++11 -Xclang -ast-dump -fsyntax-only 源文件路径 -I 依赖的头文件路径

-std参数说明

在这里插入图片描述

-I参数说明

在这里插入图片描述

clagn各个参数指引文档
https://clang.llvm.org/docs/ClangCommandLineReference.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值