赋值从没有强制转换C的整数中生成指针

时间:2013-06-10 07:23:55

标签: c linux

我正在使用结构

typedef struct ObjectHandle
{
    long *objHandle;
}ObjectHandle ;

一个函数,其中输出是此结构的值

AllocateObject(ObjectHandle* objectHandle) 
{
   .... 
   ...
   ...
   objectHandle->objHandle = some long value;
}

但是编译器正在发出警告:赋值从整数中生成指针而没有强制转换

请帮忙

3 个答案:

答案 0 :(得分:7)

好像你将值分配给值(内存),而不是分配给指针(地址)

试试这个: *(objectHandle->objHandle) = some long value;

答案 1 :(得分:0)

因为它是一个长指针,它应该有长变量的地址。

objectHandle->objHandle = &(some long value);

答案 2 :(得分:0)

您为指针指定了一个长整数(objHandle是指向long的指针)。就像编译器说的那样。

这是有效的c,但通常是一个相当愚蠢的事情,因为长整数是长整数,而不是指针。

在没有看到“某些长值”实际引用的内容以及随后如何使用句柄的情况下,指示是否应该转换值,获取它的地址,更改句柄的类型有点困难或者别的什么。