offsetofの一定義例によると、求められたオフセット値はsize_t
にキャストされているマクロになってました。
>>772のc[5]のアドレスを指定されてそこに書き込む関数、
を考えると

static Test test;

SetAAA(const char *str)
{
Test* p;
size_t offset;
char* dest;

p = &test;
offset = offsetof(Test, c);
dest = p + offset;
strcpy(dest, str);

}
のような事をしたいのですが、この場合、安全なキャスト
はどのようになりますか?

dest = (char*)(p+offset);

と強引にやってしまってよいでしょうか?