如何使用Clang作为预处理器

And*_*Geo 4 preprocessor llvm lexer llvm-clang

我正在做论文,我必须将源代码解析并标记为单个函数.对于每个函数,我想提取类型的名称,称为函数名称和类型转换.铿锵声是这种工作的正确工具吗?如果是,我该怎么做?

下面是一个简单的C函数.粗体是我想要的提取项目:

static char func1(unsigned int a, struct foo *b)
{
    int c = 0;
    struct bar *d;

    if (a == 0) {
        d = func2((int) a);
    } else {
        c = func3((struct bar *) b);
    }

    return c;
}

Ale*_*sov 6

是的,Clang是完成这项工作的合适工具.

你应该看一看libclang.

你可以在互联网上找到足够的信息,但我个人可以推荐两篇很棒的文章:

用Eli Bendersky的Clang解析Python中的C++

Mike Ash 介绍libclang

如果您更喜欢观看视频,那么我建议您查看libclang此处的演示文稿:2010 LLVM开发者大会,寻找libclang: Thinking Beyond the Compiler