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