自定义属性
属性的结构
属性定义在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];
}属性的添加步骤
在include/clang/Basic/Attr.td中添加属性的定义
在include/clang/Basic/AttrDocs.td中添加文档定义
在lib/Sema/SemaDeclAttr.cpp中添加语义操作
clang常用命令
展示抽象语法树
结果示例
Last updated
Was this helpful?