我正在使用结构
typedef struct ObjectHandle
{
long *objHandle;
}ObjectHandle ;
一个函数,其中输出是此结构的值
AllocateObject(ObjectHandle* objectHandle)
{
....
...
...
objectHandle->objHandle = some long value;
}
但是编译器正在发出警告:赋值从整数中生成指针而没有强制转换
请帮忙
答案 0 :(得分:7)
好像你将值分配给值(内存),而不是分配给指针(地址)
试试这个:
*(objectHandle->objHandle) = some long value;
答案 1 :(得分:0)
因为它是一个长指针,它应该有长变量的地址。
objectHandle->objHandle = &(some long value);
答案 2 :(得分:0)
您为指针指定了一个长整数(objHandle是指向long的指针)。就像编译器说的那样。
这是有效的c,但通常是一个相当愚蠢的事情,因为长整数是长整数,而不是指针。
在没有看到“某些长值”实际引用的内容以及随后如何使用句柄的情况下,指示是否应该转换值,获取它的地址,更改句柄的类型有点困难或者别的什么。