`IncompleteType` (or some other appropriately-named exception such as `Non_C_type`) would be more appropriate than `Assert_failure` here.  `Assert_failure` suggests an error in the implementation, not a user error.