为无符号uint8_t数组分配32位值

时间:2012-09-10 05:59:31

标签: c pointers data-structures

我的结构如下所示。

typedef struct
{
    attribute_code_t field_id;
    uint8_t instance_num;
    uint8_t length;
    uint8_t data[32];
    uint32_t crc_value;
}table_entry_t;

我想按如下方式填充结构。

entry->field_id = 54;;
entry->instance_num = 0;
entry->length = 4;
entry->data = 0xfdfcfefa;

它给了我错误,错误:赋值中的不兼容类型。在最后一行。我想知道执行上述任务的最佳方法是什么。

感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

你有32字节的数组,并且你试图为它们分配一个4字节的值。你想要什么结果?如果它填充前4个字节,请单独分配。或者使用常数数组:

static const uint8_t __initializer[] = { 0xfd, 0xfc, 0xfe, 0xfa };
entry->length = sizeof(__initializer);
memcpy( entry->data, __initializer, sizeof(__initializer) );

由于不同平台上的各种字节顺序,强烈建议不要将int复制到数组中。