What sort of way is this code failing? I think the idea is getting confused because you've included EVENT evt; in the struct, and this is the same name as the void above... but by doing this, you haven't actually created any relationship between those two things, you've simply defined a function evt() which happens to have the same name as an element in test_struct. Better to define a function pointer within the struct, then explicitly set it TO evt(), then try to call it.
typedef struct {
...
void* event;
} test_struct;
...
// then later on, inside a function somewhere
test_struct bla;
bla.event = evt;
bla.event(); // this calls evt()