获取函数参数类型

假设我调用了一个函数,该函数在我的源代码中获取了可变数量的参数。 我想对这个源代码进行某种静态分析,以找到实际传递给函数的参数类型。 例如,如果我的函数调用是 –

foo(a,b,c)

我想找到a,b和c的数据类型并存储此信息。

你必须完成编译程序的parse-and-build-a-symbol-table部分。

这意味着运行预处理器,以及lexing。

这是坏消息。

好消息是你不需要做很多艰苦的事情。 除了typedef之外,不需要构建AST,代码的每个部分; struct,union和enum定义; 变量或函数声明和定义; 并且分析函数调用参数可以是无操作。

在Chris的评论提示的进一步思考中 :你必须能够分析表达的类型并处理va-arg促销。

它仍然是一个比编写整个编译器更小的项目,但应该仔细考虑一下。

如果这是在C ++中,你可以使用typeid等将一些RTTI混在一起。

http://en.wikipedia.org/wiki/Run-time_type_information