Я пишу средство проверки для 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
это myType
или long/int
, но не uintptr_t
.
как я могу узнать val
это тип uintptr_t
?