如何使用 Clang 作为预处理器

How to use Clang as a preprocessor

我正在写论文,我必须将源代码解析并标记为单独的函数。对于每个函数,我都想提取类型名称,称为函数名称和类型转换。 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;
}

是的,Clang 是完成这项工作的正确工具。

你应该看一看 libclang

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

Parsing C++ in Python with Clang 作者:Eli Bendersky

Introduction to libclang 迈克·阿什

如果您更喜欢看视频,那么我可以推荐您在此处查看 libclang 上的演示:2010 LLVM Developers' Meeting,查找 libclang: Thinking Beyond the Compiler