现在的位置: 首页 > 操作系统 > 正文

GCC和C99中结构体的标签式初始化语法差异

2020年02月10日 操作系统 ⁄ 共 543字 ⁄ 字号 评论关闭

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://www.xuebuyuan.com/Linux/2017-01/139721.htm

以上就上有关GCC和C99中结构体的标签式初始化语法差异的全部内容,学步园全面介绍编程技术、操作系统、数据库、web前端技术等内容。

抱歉!评论已关闭.