我正在编写一个 Clang 工具,并且试图弄清楚如何在访问程序 AST 的情况下评估字符串文字。给定以下程序:
class DHolder {
public:
DHolder(std::string s) {}
};
DHolder x("foo");
我在 Clang 工具中有以下代码:
const CXXConstructExpr *ctor = ... // constructs `x` above
const Expr *expr = ctor->getArg(0); // the "foo" expression
???
如何在我的工具中从Expr
表示"foo"
字符串文字到实际的 C++ 字符串?我试图做类似的事情:
// From ExprConstant.cpp
Evaluate(result, info, expr);
但我不知道如何初始化result
和info
参数。
有什么线索吗?