Casting to a pointer of incompatible type is UB. The exception is casting to char*.
Tell me why struct* is incompatible with void* when it's such a standard case in C that you don't need a cast:
struct foo *x = malloc(sizeof(struct foo)); /* malloc returns void* */
Tell me why struct* is incompatible with void* when it's such a standard case in C that you don't need a cast:
Or rather, tell me why the C11 standards committee decided to declare that struct* is incompatible with a void*