我正在编写clang-tidy的检查器,该检查器检查int和指针之间的转换。
例如,对于代码:
computed: {
itemIds() {
return Object.keys(state.itemByIds);
},
items() {
return Object.values(state.itemByIds);
}
}
我想将其修复为:
int val = 0xbaddeef;
char* ptr = (char*)val;
但是如果char* ptr = (char*)(uintptr_t)val;
已经是a
,我不会解决。
uintptr_t
我的问题是我匹配了typedef uintptr_t myType;
myType val = 0xbaddeef;
char* ptr = (char*)val;
并获得了匹配结果,但是我无法获得演员表的源类型,我使用了CStyleCastExpr
,我得到了{{1 }}是CStyleCastExpr.getSubExpr().getType().getXXXXType()
或val
,但不是myType
。
我怎么知道long/int
是uintptr_t
的一种类型?
答案 0 :(得分:0)
您可能会看到getType()。getAsString(),getType()。getCanonicalType.getAsString()和getType()。getUnqualifiedType.getAsString()。我认为其中一个会返回您想要的东西。