当前位置:  技术问答>linux和unix

一个C++结构体的问题= =

    来源: 互联网  发布时间:2017-05-28

    本文导语:  刚开始看内核的MD模块,一上来就懵了: static const struct block_device_operations md_fops = { .owner = THIS_MODULE, .open = md_open, .release = md_release, .ioctl = md_ioctl, #ifdef CONFIG_COMPAT .compat_ioctl = md_compat_ioctl, #endif .getgeo = m...

刚开始看内核的MD模块,一上来就懵了:
static const struct block_device_operations md_fops =
{
.owner = THIS_MODULE,
.open = md_open,
.release = md_release,
.ioctl = md_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl = md_compat_ioctl,
#endif
.getgeo = md_getgeo,
.media_changed  = md_media_changed,
.revalidate_disk= md_revalidate,
};

如上面这段代码所示
又比如下面这个
static struct dm_cache_policy_type default_policy_type = {
.name = "default",
.version = {1, 2, 0},
.hint_size = 4,
.owner = THIS_MODULE,
.create = mq_create,
.real = &mq_policy_type
};

这里有几个问题:
1、static struct XXXX ={
 .var1 = XXX,
 .var2 = XXX
};
这样的声明是什么意思?以前还真没遇到过。
2、第二段代码中出现了这样的语句:
var = {1,2,0};
这又是啥意思?

|

|

这个相当于:
static struct XXXX x;
x.var1 = XXX;
x.var2 = XXX;

|

这个var应该是个结构体,他包含三个成员变量,这句话把他们三个分别初始化。

|
这是结构的指定初始化项目,用点和成员名来表示具体元素

|
这些是C99标准里面的语法

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3