如何将8个字节写入void *地址?

时间:2014-01-30 03:13:05

标签: c++ c pointers data-structures

所以我有一个定义的8字节数据结构

typedef struct __attribute__((__packed__)) entry{
    // something here total 64 bits;
}entry_t;

我有一个void* base,它是一个指向我要放入条目的基地的指针。

entry_t a;
*base = a;

做这个工作?

或者我必须将指针转换为entry_t的指针?

更新
对不起,我没有提到我不能使用memcpy,因为我使用的内核还没有实现memcpy。

2 个答案:

答案 0 :(得分:5)

或者:

*((entry_t *)base) = a;

memcpy(base, &a, sizeof a);

当然,确保实际上有8个字节可以复制到其中。

答案 1 :(得分:1)

将指针转换为unsigned char *并使用赋值运算符的8次使用写入8个字节(循环或展开)。