我正在尝试使用Clang Static Analyzer分析C程序。 我已经使用clang驱动程序构建了AST文件。 但是如何获得不同AST文件(不同的TranslationUnit)之间的真实函数定义?
例如:
functions.h
int func1(int a);
int func2(int a, int b);
functions.c
#include "functions.h"
int func1(int a) {
return a;
}
int func2(int a, int b) {
return a + b;
}
main.c
#include "functions.h"
int main() {
int num1 = func1(2);
int num2 = func2(3, 4);
int sum = num1 + num2;
}
ast文件main.ast包含两个func1
和func2
的FunctionDecls(因为它已经过预处理),但是我无法获得这两个函数的真实定义(函数主体)因为它们不在main.ast
中。
如何获得这两个函数的定义(函数体)?