在llvm出现前, c++的compiler基本是"复杂"和"神秘"的代言人, 大家了解得比较多的: 1....因为ClangSharp.Interop其实包含对两个c++动态库的P/Invoke封装, 我们可以简单通过对应的文件名和静态类名来区分, libclang相关的接口基本都集中在 clang.cs中,...错误处理
代码中可能存在错误, 这种情况下我们没法继续后续AST分析的过程, 我们需要输出错误日志, 让使用者知道出现问题, 尝试修复代码, 错误处理的代码也比较简单, 也是利用libcalng本身的...但因为跟源代码语法基本是一一对应的关系, 上手难度并不高.
8.2.3 Types概览
c++复杂的类型系统始终是离线工具处理的一大难点, 如下图所示, 我们给出了c++中大概的类型分类:..., 否则compiler会直接忽略掉相关的attribute定义, 并且给出warning.
10.1 基本的原理
通过扩展attribute来实现attribute的自定义, 明显是很不适合用来定制的