是否可以在var superhero = {
id: 0,
firstname: 'Duck',
lastname: 'Darkwing'
};
for (property in superhero)
{
let propertyName = property.toString();
// Store initial value in '_var' before overwriting it with get/set
this['_' + propertyName] = superhero[property];
Object.defineProperty(superhero, propertyName, {
set: function(value) {
this['_' + propertyName] = value;
},
get: function() {
return this['_' + propertyName];
}
});
}
console.log('--- Initial Value of test ---');
console.log(superhero);
console.log('-----------------------------');
superhero.firstname = 'Kal';
superhero.lastname = 'El';
console.log (superhero.firstname + ' ' + superhero.lastname);
内的FunctionDecl
内找到VisitFunctionDecl
的呼叫站点?
答案 0 :(得分:0)
使用RecursiveASTVisitor
来查找被呼叫者为您正在寻找的CallExpr
的{{1}}。 Clang实际上有一个特殊的界面,用于称为matcher interface的事物类型,您可以使用命令行工具“ clang-query”进行试验:
FunctionDecl
您在此工具中编写的匹配表达式(具有制表符完成功能!)是有效的C ++,使用clang AST匹配器库。迭代表达式并确信它可以工作后,只需将其复制并粘贴到您的项目中即可。