博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GCC和C99中结构体的标签式初始化语法差异
阅读量:4113 次
发布时间:2019-05-25

本文共 478 字,大约阅读时间需要 1 分钟。

GCC很早就支持标签式初始化结构体,标准C则是C99之后才对此进行了支持。两者语法不同,效果相同。

例子:

struct Student {    char *name;    int age;    float score;    double money;};

传统GCC初始化代码:

struct Student s1 = {    age: 18,    money: 100.23,};

C99初始化代码:

struct Student s1 = {    .age = 18,    .money = 100.23,};

对于未显式初始化的成员变量,编译器自动进行默认初始化(int类型默认为0,float/double默认为0.0,指针默认为NULL)。

由于GCC标签式初始化结构体特性出现的更早,所以可以推断C99是借鉴了GCC的做法,只是在语法上做了一定的改变。这种语法不一致就会导致一些混乱的情况出现。为了避免这种混乱,GCC正在逐步放弃原来的语法,转而支持C99标准。

在Linux2.6及以后内核源码里已经使用了C99的新式语法。

转载地址:http://mnzpi.baihongyu.com/

你可能感兴趣的文章
软件(项目)的分层
查看>>
菜单树
查看>>
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>
Oracle -常用命令
查看>>
JAVA技术简称
查看>>
ORACLE模糊查询优化浅谈
查看>>
2016——个人年度总结
查看>>
2017——新的开始,加油!
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>