将具有静态constexpr的类赋予const char *:
结构S { 静态constexpr const char * str =“ 123”; ... };
在使用lang AST进行解析时,我能否通过GetInClassInitializer()从FieldDecl类中获取字符串expr“ 123”?我想我会得到某种指针,但是那会指向带有“ 123”的区域吗?如果不是,应该使用什么正确的clang API调用来获取值?谢谢!
答案 0 :(得分:0)
我想我在数据成员def中使用“ const”的想法太多了。我担心在解析期间字符串“ 123”可能不可用。事实证明它是可用的,访问非常简单。假设“ d”指向“ str”以上的成员def,则返回初始化字符串的函数片段可以如下:
...
if ( VarDecl *vard = dyn_cast<VarDecl>(d) ) {
if ( vard->isStaticDataMember() ) {
Expr *expr = vard->getInit();
Expr *constExpr = expr->IgnoreImpCasts();
if ( StringLiteral *str = dyn_cast<StringLiteral>(constExpr) )
return str->getString().str();
}
}