0

我有一个如下所示的结构。

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;

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

任何帮助表示赞赏。

4

2 回答 2

4

以下代码将数据复制到 32 字节的前 4 个字节。

tmpdata = 0xfdfcfefa;
memcpy(entry->data, &tmpdata, sizeof(uint8_t) *4);
于 2012-09-10T06:04:26.690 回答
4

你有一个 32 字节的数组,你试图给它们分配一个 4 字节的值。你想要什么结果?如果它正在填充前 4 个字节,请分别分配它们。或者使用常量数组:

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

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

于 2012-09-10T06:13:45.393 回答