【发布时间】:2021-02-08 03:08:39
【问题描述】:
我有这个功能
VOID printip(void *ip, THREADID tid)
{
PIN_GetLock(&pinLock, tid+1);
fprintf(trace, "%d %p\n", tid, ip);
fflush(trace);
PIN_ReleaseLock(&pinLock);
}
指针ip以十六进制格式打印,但我想以整数格式打印。所以我尝试了以下-->
VOID printip(int *ip, THREADID tid)
{
PIN_GetLock(&pinLock, tid+1);
fprintf(trace, "%d %d\n", tid, ip);
fflush(trace);
PIN_ReleaseLock(&pinLock);
}
请建议如何将其打印为整数?
【问题讨论】:
-
请将错误信息以文字形式而非图片形式发布。
-
刚投:
(int)tid?? -
@kebs 图片有什么问题?
-
顺便说一句,问题解决了。我刚刚使用了“long int x=*((long int *) &ip)”并打印了 %d of x。
-
@RohanShaw 这是处理此问题的错误方法。这将在
sizeof(long int) < sizeof(int*)的系统上失败。请改用reinterpret_cast<uintptr_t>(ip)。