打印长而不发出警告

时间:2017-03-02 13:50:09

标签: c pointers

在我的代码中,我创建了一个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。反正有没有这样做,所以我避免警告?经过无数的谷歌搜索,我无法找到解决方案。谢谢!

3 个答案:

答案 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)

1:void *ret = (void *) (long) number);

更改为:void *ret = (long*)&number;

2:fprintf(stderr, "ld", ret);

更改为:fprintf(stderr, "%ld", *(long*)ret);

3:我建议

将其更改为:long* ret = (long*) &number);fprintf(stderr, "%ld", *ret)