自定义属性

官方文档

属性的结构

属性定义在llvm源码:include/clang/Basic/Attr.td

示例

def Aligned : InheritableAttr {
  let Spellings = [GCC<"aligned">, Declspec<"align">, Keyword<"alignas">,
                   Keyword<"_Alignas">];
  let Args = [AlignedArgument<"Alignment", 1>];
  let Accessors = [Accessor<"isGNU", [GCC<"aligned">]>,
                   Accessor<"isC11", [Keyword<"_Alignas">]>,
                   Accessor<"isAlignas", [Keyword<"alignas">,
                                          Keyword<"_Alignas">]>,
                   Accessor<"isDeclspec",[Declspec<"align">]>];
  let Documentation = [Undocumented];
}

属性的添加步骤

  1. 在include/clang/Basic/Attr.td中添加属性的定义

  2. 在include/clang/Basic/AttrDocs.td中添加文档定义

  3. 在lib/Sema/SemaDeclAttr.cpp中添加语义操作

clang常用命令

展示抽象语法树

结果示例

Last updated

Was this helpful?