我有一个函数logEthernetConnection()
,它以整数作为参数。
但是,要求建议我将结构传递给它。
我在传递时对结构进行了类型化处理,但我得到了标题中提到的错误: -
error (dplus:1061): illegal cast: from 'socket_log_data' to 'unsigned int'
以下是代码段: -
typedef struct fields
{
UINT16 loss_reason : 1;
UINT16 unused : 15;
} FIELDS;
typedef union fields_union
{
UINT16 all_fields;
FIELDS ref_fields;
fields_union() : all_fields(0), ref_fields() {}
} FIELDS_UNION;
typedef struct socket_log_data
{
FIELDS_UNION ref_fields_union;
UINT16 socket_number;
socket_log_data() : socket_number(0), ref_fields_union() {}
} SOCKET_LOG_DATA;
int logEthernetConnection(UINT32 data)
{
return data;
}
void main()
{
UINT32 data = logEthernetConnection((UINT32)socket_log_data);
getchar();
}
我该如何解决这个问题?
相关查询发布在这里: - Error: illegal cast: from 'int' to 'union'
答案 0 :(得分:1)
您不能将结构传递给需要整数的函数!函数会做什么(假设,你设法通过肮脏的hackery抛出它)。
该功能如何处理它?</ p>
答案 1 :(得分:-1)
您尝试投射的结构尺寸大于UINT32。而且,你不能把这样的结构转换为int(无论大小)。我想你想要做的是投射一个结构socket_log_data的UINT16成员,如:
void main()
{
socket_log_data my_var_struct;
// Fill the my_var_struct
UINT32 data = logEthernetConnection( (UINT32) my_var_struct.socket_number);
getchar();
}
希望这有帮助!