#define SMSG_PLAYER_ITEMLIVE 124 typedef int (f_handle)(); struct definition_member { int type; unsigned int offset; char *member_name; }; struct networkcall { int network_call_number; f_handle *f; struct definition_member *def; int definition_size; }; struct definition_member def_smsg_player_itemlive[] = { {0, 0, "salut"}, {0, 5, "hekjdsflkjdf"} }; int handle_itemlive(void) { printf("asdasfdffffffffffffff\n"); } struct networkcall gl_smsg[] = { {SMSG_PLAYER_ITEMLIVE, &handle_itemlive, &def_smsg_player_itemlive, 1}, {SMSG_PLAYER_ITEMLIVE, &handle_itemlive, def_smsg_player_itemlive, 1}, {0, 0, 0, 0}, }; int main() { struct definition_member *dm1, *dm2; printf("%08x %08x\n", gl_smsg[0].def, gl_smsg[0].def); dm1 = &(&gl_smsg[0])->def; dm2 = (&gl_smsg[0])->def; printf("%08x %08x\n", dm1, dm2); (**gl_smsg[0].f)(); }