Extra plus in front of 0? Why not just use sizeof(struct msgtable)?
Yeah, I guess that would be fine too.
Something like can be done without unions:
#define msgstr (*(char (*)[sizeof msgtable])&msgtable)
AFACT it's well-defined C and permits to perform bound checking.
That's less clean than a union.