gnu c标记化结构初始化语法

gnu c标记化结构初始化语法

ID:2017625

大小:97.50 KB

页数:8页

时间:2017-11-14

gnu c标记化结构初始化语法_第1页
gnu c标记化结构初始化语法_第2页
gnu c标记化结构初始化语法_第3页
gnu c标记化结构初始化语法_第4页
gnu c标记化结构初始化语法_第5页
资源描述:

《gnu c标记化结构初始化语法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、GNUC标记化结构初始化语法---结构体成员前加小数点对结构体[cpp] viewplaincopyprint?1.struct a{2.3.int b;4.5.int c;6.7.}有几种初始化方式:[cpp] viewplaincopyprint?1.struct aa1={2..b=1,3..c=24.};或者[cpp] viewplaincopyprint?1.struct aa1={2.b:1,3.c:24.}或者[cpp] viewplaincopyprint?1.struct aa1={1,2};

2、内核喜欢用第一种,使用第一种和第二种时,成员初始化顺序可变。标记化结构初始化语法在Linux2.6内核中对结构体的定义形式发生了变化,不再支持原来的定义形式。[cpp] viewplaincopyprint?1.1 static struct tty_operationsuart_ops=2.2{1.3.open=uart_open,//串口打开2.4.close=uart_close,//串口关闭3.5.write=uart_write,//串口发送4.6.put_char=uart_put_char,//.

3、..5.7.flush_chars=uart_flush_chars,6.8.write_room=uart_write_room,7.9.chars_in_buffer=uart_chars_in_buffer,8.10.flush_buffer=uart_flush_buffer,9.11.ioctl=uart_ioctl,10.12.throttle=uart_throttle,11.13.unthrottle=uart_unthrottle,12.14.send_xchar=uart_send_xcha

4、r,13.15.set_termios=uart_set_termios,14.16.stop=uart_stop,15.17.start=uart_start,16.18.hangup=uart_hangup,17.19.break_ctl=uart_break_ctl,18.20.wait_until_sent=uart_wait_until_sent,19.21#ifdefCONFIG_PROC_FS20.22.read_proc=uart_read_proc, //proc入口读函数21.23#endi

5、f22.24.tiocmget=uart_tiocmget,23.25.tiocmset=uart_tiocmset,24.26};这个声明采用了标记化结构初始化语法。这种写法是值得采用的,因为它使驱动程序在结构的定义发生变化时更具有可移植性,并且使代码更加紧凑且易读。标记化的初始化方法允许对结构成员进行重新排列。在某些场合下,将频繁被访问的成员放在相同的硬件缓存行上,将大大提高性能。---LLD3标记化结构初始化语法是ISOC99的用法CPrimerPlus第五版相关章节:已知一个结构,定义如下:[cpp] 

6、viewplaincopyprint?1.struct book2.{3.char title[MAXTITL];4.char author[MAXAUTL];1.float value;2.};C99支持结构的指定初始化项目,其语法与数组的指定初始化项目近似。只是,结构的指定初始化项目使用点运算符和成员名(而不是方括号和索引值)来标识具体的元素。例如,只初始化book结构的成员vlaue,可以这样做:[cpp] viewplaincopyprint?1.struct booksurprise={.value=

7、10.99};可以按照任意的顺序使用指定初始化项目:[cpp] viewplaincopyprint?1.struct bookgift={2.3..value=25.99,4..author= "JamesBroadfool",5..title= "RuefortheToad"6.};正像数组一样,跟在一个指定初始化项目之后的常规初始化项目为跟在指定成员后的成员提供了初始值。另外,对特定成员的最后一次赋值是它实际获得的值。例如,考虑如下声明:[cpp] viewplaincopyprint?1.struct 

8、bookgift={2.3..value=18.90,4..author= "Philionnapestle",5.0.256.};这将把值0.25赋给成员vlaue,因为它在结构声明中紧跟在author成员之后。新的值0.25代替了早先的赋值18.90。有关designatedinitializer的进一步信息可以参考C99标准的6.7.8节Initialization。代码举例:[

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。