值存储在struct中

时间:2011-10-20 07:35:01

标签: c kernel embedded-linux void void-pointers

我是C语言的新手。关于结构,我有一些问题要问。

例如:

static inline void *mmc_priv(struct mmc_host *host)
{        
     return (void *)host->private;
}

struct mmc_host 
{
    unsigned long private[0] ____cacheline_aligned;
};


struct mmc_davinci_host *host = NULL;
struct mmc_host *mmc = NULL;

host = mmc_priv(mmc);
host->mmc = mmc;

* struct mmc_davinci_host请参阅此网站http://lxr.free-electrons.com/source/drivers/mmc/host/davinci_mmc.c#L167 *

函数mmc_priv()返回一个void指针。那么,host在哪里存储返回的地址,因为host是结构类型?

谢谢。

1 个答案:

答案 0 :(得分:1)

返回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);