我正在为 clang-tidy 编写一个检查器,它检查 int 和指针之间的转换。
例如,对于代码:
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
并获得了匹配结果,但是我无法获得演员表的源类型,我使用了CStyleCastExpr.getSubExpr().getType().getXXXXType()
,我得到了val
is myType
or的类型long/int
,但不是uintptr_t
。
我怎么知道val
是一种类型uintptr_t
?