【发布时间】:2012-03-01 02:36:55
【问题描述】:
我正在尝试在 void * 数组中分配由 void * 指向的值。这是我到目前为止所拥有的:
23 void queue_enqueue(void *q, void *item) {
24 int len = 0 ;
25
26 len = sizeof(q) ;
27 q[len-1] =
28 item ;
29
30 return ;
31
32 }
出现此编译器错误:
myqueue.c:27: warning: dereferencing ‘void *’ pointer
myqueue.c:28: error: invalid use of void expression
我一直在寻找答案大约一个小时,但我还没有看到与我在这里给出的类似的实现。如果您想知道,是的,这是家庭作业,原型是由讲师提供的。
因为它们是作为 void * 传递的,所以我一直无法使用 gcc typeof 运算符。
我同意这个警告。我知道这只是 gcc 告诉我“小心我们不会为你检查这个”,但我无法摆脱第 28 行的错误。
提前感谢您的帮助。
【问题讨论】:
-
出于好奇,你为什么要这样做?
-
你知道
sizeof给你的是指针的大小,而不是数组中元素的数量吗? -
@Calvin - 我正在创建一个队列并消除数据冗余,我允许它保存任何数据类型
-
@asaeir - 你完全正确。您刚刚为我节省了一些时间来尝试追踪该错误。
标签: c void-pointers