Возвращение void*
не означает возврата указателя void
. Это значит вернуть указатель на любой тип .
Фактически, указатели хранят адреса, а адреса всегда имеют одинаковый размер, независимо от того, какой тип находится позади.
Тем не менее, вы должны иметь приведение к struct mmc_davinci_host *
после вызова mmc_priv
. Я бы написал так:
/* call mmc_priv and store its result in host, after having cast it to struct mmc_davinci_host * */
host = (struct mmc_davinci_host *) mmc_priv(mmc);