OFFSETOF マクロを使用して構造体のフィールドを更新するコード
#include <stdio.h>
#define OFFSETOF(TYPE, ELEMENT) ((size_t)&(((TYPE *)0)->ELEMENT))
typedef struct PodTag {
int i;
double d;
char c;
}PodType;
#pragma pack(1)
int main()
{
char arr[20] = {'\0'};
arr[0] = 0x1;
PodType instance;
printf("%d\n", OFFSETOF(PodType, c));
memset(&instance,0,sizeof(PodType));
memcpy(&instance+OFFSETOF(PodType, c),&arr[0],sizeof(char));
printf("Val of C = %d\n",instance.c); // value is not reflected
getchar();
return 0;
}
ここで私は memcpy をやっています。値が反映されません。どうしたの
memcpy(&instance+OFFSETOF(PodType, c),&arr[0],sizeof(unsigned char));
構造体フィールドを更新するためにこのようなことを行うことはできますか
#define OFFSETOF_DATA(TYPE, ELEMENT,data) \
(*((size_t)&(((TYPE *)0)->ELEMENT)) = (unsigned char)(data))