美文网首页C语言C语言&嵌入式编程语言爱好者
关于遇到C结构体中出现以.开头的疑惑

关于遇到C结构体中出现以.开头的疑惑

作者: 檀蒜 | 来源:发表于2021-04-04 16:37 被阅读0次

    在学习过程中,经常看到一些源文件中有结构体struct中的成员是以.开头的,如:

    staticstructuart_ops sw_uart_ops={.tx_empty=sw_uart_tx_empty,.set_mctrl=sw_uart_set_mctrl,.get_mctrl=sw_uart_get_mctrl,.stop_tx=sw_uart_stop_tx,.start_tx=sw_uart_start_tx,.stop_rx=sw_uart_stop_rx,.enable_ms=sw_uart_enable_ms,.break_ctl=sw_uart_break_ctl,.startup=sw_uart_startup,.shutdown=sw_uart_shutdown,.flush_buffer=sw_uart_flush_buffer,.set_termios=sw_uart_set_termios,.type=sw_uart_type,.release_port=sw_uart_release_port,.request_port=sw_uart_request_port,.config_port=sw_uart_config_port,.verify_port=sw_uart_verify_port,.pm=sw_uart_pm,};

    staticstructfile_operations test_fops={.owner=THIS_MODULE,.open=chrtest_open,.read=chrtest_read,.write=chrtest_write,.release=chrtest_release,};

    然后感觉这种格式很奇怪,查了资料后发现,

    这个是C99标准中的结构体初始化方法。

    结构体的乱序赋值,好像是GCC的扩展

    这是一个C的问题,初始化的时候指定成员的名字,即使在结构体增加,插入字段的时候代码也可以正常工作。

    也就是说,在声明定义了结构体后,这个结构体可能有很多成员,而在使用这个结构体进行初始化时,可以不按顺序、不全部用到地来进行赋值初始化。

    (由于之前查过一次然后隔一段时间又忘了,故博客记录一波~)

    相关文章

      网友评论

        本文标题:关于遇到C结构体中出现以.开头的疑惑

        本文链接:https://www.haomeiwen.com/subject/haslkltx.html