将指针转换为void

阿美

以下两个铸件有什么区别吗?

int a=10;
int *p=&a;

(void)p;          //does not give any warning or error 

要么

(void *)p;        //error: statement with no effect [-Werror=unused-value]

遵守时 gcc -Wall -Werror --std=c99 -pedantic

刚刚在这个答案中看到了。(显然我误会了一些东西)

苏拉夫·戈什(Sourav Ghosh)

是的,显然。

 (void)p;

意味着该对象将被强制转换为void类型(不是完整类型)并且作为完整表达式,因此不应使用该表达式的结果,因此编译器不会检查其用途。

引用C11标准,第6.3.2.2章,void

void表达式(类型为void的表达式)的(不存在)值不得以任何方式使用,[......]如果将任何其他类型的void表达式作为表达式值,则其值或指示符为丢弃。

因此,不会生成警告或错误。

太太

(void *)p;

表示对象是指向void类型的指针,它是完整类型,应在程序中使用。在这种情况下,编译器正确地报告了表达式中对象的未使用情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将false转换为指针类型void *?

来自分类Dev

将 void 指针转换为动态类型

来自分类Dev

C-将指针转换为指向void的指针

来自分类Dev

您可以将“函数指针指向指针”转换为void *

来自分类Dev

如何将void指针强制转换为函数指针

来自分类Dev

如何将类型为void(*)()的指针转换为void *

来自分类Dev

将 void 双指针类型转换为 void,为什么?

来自分类Dev

为什么将指向int的指针转换为void *但将指向函数的指针转换为bool?

来自分类Dev

将指针传递给对象时类型转换为(void *)

来自分类Dev

如何两次将指针转换为“ void *”无效?

来自分类Dev

如何将整数转换为常量void指针?

来自分类Dev

是否可以将Swift类转换为C void *指针?

来自分类Dev

函数指针将参数强制转换为 void

来自分类Dev

将子例程的地址转换为void指针

来自分类Dev

将包含void *指针的结构转换为其等效的Ctype

来自分类Dev

C++:将void指针转换为shared_ptr

来自分类Dev

将函数转换为通用 void 指针作为函数参数

来自分类Dev

如何将void指针转换为int指针,然后将int指针存储在其中?

来自分类Dev

将*指针转换为***指针

来自分类Dev

将int转换为指针-为什么先转换为long?(如p =(void *)42;)

来自分类Dev

在将指针转换为uintptr_t之前需要转换为void *吗?反之亦然?

来自分类Dev

将指针转换为指针...指向指针?

来自分类Dev

在C语言中,将指针强制转换为struct ao void *的指针有什么用?

来自分类Dev

双指针的地址强制转换为void **

来自分类Dev

在 Julia 中将变量转换为 void 指针

来自分类Dev

将C代码移植到C ++,将void *从malloc转换为所需指针的问题

来自分类Dev

为什么在将 void 指针转换为指向 char 指针的指针后取消引用会产生问题?

来自分类Dev

将指针转换为整数

来自分类Dev

将指针转换为 TBytes

Related 相关文章

  1. 1

    将false转换为指针类型void *?

  2. 2

    将 void 指针转换为动态类型

  3. 3

    C-将指针转换为指向void的指针

  4. 4

    您可以将“函数指针指向指针”转换为void *

  5. 5

    如何将void指针强制转换为函数指针

  6. 6

    如何将类型为void(*)()的指针转换为void *

  7. 7

    将 void 双指针类型转换为 void,为什么?

  8. 8

    为什么将指向int的指针转换为void *但将指向函数的指针转换为bool?

  9. 9

    将指针传递给对象时类型转换为(void *)

  10. 10

    如何两次将指针转换为“ void *”无效?

  11. 11

    如何将整数转换为常量void指针?

  12. 12

    是否可以将Swift类转换为C void *指针?

  13. 13

    函数指针将参数强制转换为 void

  14. 14

    将子例程的地址转换为void指针

  15. 15

    将包含void *指针的结构转换为其等效的Ctype

  16. 16

    C++:将void指针转换为shared_ptr

  17. 17

    将函数转换为通用 void 指针作为函数参数

  18. 18

    如何将void指针转换为int指针,然后将int指针存储在其中?

  19. 19

    将*指针转换为***指针

  20. 20

    将int转换为指针-为什么先转换为long?(如p =(void *)42;)

  21. 21

    在将指针转换为uintptr_t之前需要转换为void *吗?反之亦然?

  22. 22

    将指针转换为指针...指向指针?

  23. 23

    在C语言中,将指针强制转换为struct ao void *的指针有什么用?

  24. 24

    双指针的地址强制转换为void **

  25. 25

    在 Julia 中将变量转换为 void 指针

  26. 26

    将C代码移植到C ++,将void *从malloc转换为所需指针的问题

  27. 27

    为什么在将 void 指针转换为指向 char 指针的指针后取消引用会产生问题?

  28. 28

    将指针转换为整数

  29. 29

    将指针转换为 TBytes

热门标签

归档