如何解决如何在cpp中将%p转换为%d?
我具有以下功能
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,"%d %d\n",ip);
fflush(trace);
PIN_ReleaseLock(&pinLock);
}
请建议如何将其打印为整数?
解决方法
#include <cinttypes>
,然后将fixed width (decimal) format用作uintptr_t
。
printf("%d %" PRIuPTR "\n",tid,(uintptr_t)ip);
当指针与整数大小不同时,使用"%d"
并将指针强制转换为int
会失败,例如,在x86_64上使用(大多数)编译器的64位编译中,其中{{1} },但sizeof(int) == 4
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。