在g_malloc()之后分配给uint *时,“invaiid操作数为二进制*”

时间:2014-11-25 12:50:17

标签: c casting glib

我有以下代码段

...
params->running = g_malloc(sizeof(*params->running))
*(params->running) = loopcount;
...

params看起来像这样

struct TaskParams                                                                                                              
{               
    ...
    unsigned int    *running;                                                                                                      
};

我期待g_malloc返回一个gpointer(void *),它隐式地转换为unsigned int *并且我可以用*params->running = some_unit_value

分配它

但我在第*(params->running) = loopcount;

上收到错误
error: invalid operands to binary * (have ‘gpointer’ and ‘unsigned int *’)

我无法得到它。 gpointer是无效的*应该隐式转换为正确吗?我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

 error: invalid operands to binary *
                            ^^^^^^

显然你正在尝试使用一元运算符,那么到底是怎么回事?

好吧,你忘记了上一行末尾的分号; ......