值存储在结构中
我是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()
返回一个空指针。那么,由于 host
是结构体类型,所以 host
将返回的地址存储在哪里呢?
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
返回
void*
并不意味着返回void
指针。它意味着返回指向任何类型的指针。事实上,指针存储的是地址,并且地址总是具有相同的大小,无论后面是哪种类型。
但是,在调用
mmc_priv
后,您应该强制转换为struct mmc_davinci_host *
。我会写如下:Returning
void*
does not mean to return avoid
pointer. It means to return a pointer to any type.In fact, pointers store addresses, and addresses always have the same size, no matter which type is located behind.
However, you should have a cast to
struct mmc_davinci_host *
after callingmmc_priv
. I would write it as follows: