我正在开发基于 clang libtooling 的 C/C++ 解析器。我使用 clang 生成的 AST 来解析代码。最近我观察到,对于未实例化的模板类或函数,clang 不会为该类或函数生成 AST。
示例:代码和相应的 AST 如下所示
template <typename T>
int serializeToJson(const T& value)
{
using OutputStream = std::ostream;
using OutputArchive = std::istream;
int i;
int k;
return i + k;
}
template <class T>
class TClass
{
T *ptr;
TClass() { ptr = nullptr; }
};
有没有人遇到过这样的行为?这是预期的行为。我想做代码的静态分析,我不在乎模板类/函数是否被实例化。如果没有 AST,我将无法进行正确的静态分析。
请你帮我解决这个问题。提前致谢。
谢谢,赫曼特