在我的代码中,我创建了一个void *指针,它存储一个指向long
的指针void *ret = (void *) (long) number);
我要做的就是打印它:
fprintf(stderr, "ld", ret);
但是我得到了警告:
warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘void *’
我很遗憾不得不使用void * ret。反正有没有这样做,所以我避免警告?经过无数的谷歌搜索,我无法找到解决方案。谢谢!
答案 0 :(得分:2)
void *ret = (void *) (long) number);
这是语法错误。
如果它确实存储了指向long
的指针,它看起来像这样:
long n = 42;
void *ret = &n;
您可以这样打印:
printf("%ld\n", *(long *)ret);
答案 1 :(得分:1)
请勿打印/_search?=q=*&pretty
,而是打印指针 - long
答案 2 :(得分:-2)
void *ret = (void *) (long) number);
更改为:void *ret = (long*)&number;
fprintf(stderr, "ld", ret);
更改为:fprintf(stderr, "%ld", *(long*)ret);
将其更改为:long* ret = (long*) &number);fprintf(stderr, "%ld", *ret)