iOS培训之C语言语法划时代趋势历程

2016-04-07 15:04:08 619浏览

         C语言诞生于1970年,当时在AT&T实验室由Dennis Ritchie主导开发的。据说当时仅用了一周的时间就做好了C语言编译器,所以尽管C语言从90年正式纳入ISO标准委员会,其编号为ISO/IEC 9899。尽管经历了C99与C11标准的修改历程,但为了向前兼容,有一些比较古怪的特性依然被保留。

         现在除了C语言,还诞生了许许多多的其它高级编程语言,而且大多都具有面向对象的特性。而C语言以其间接、灵活、干练而得到了系统级应用开发的首选编程语言,尤其是嵌入式系统上应用更多。然而,为了使原本已经设计精良的C语言能在整个语法体系上更具完备性,并且更与时俱进,我这里畅想一下二十一世纪的新C语言应该考虑改良的语法特性,我暂时先把这个划时代的C语言称为CNeo。这里不考虑与现有C语言的语法兼容,但一定能做到二进制兼容。CNeo的源文件后缀名暂时用.cn来表示。

iOS培训之C语言语法划时代趋势历程

         1、真正的布尔类型:在C99标准中就引入了_Bool关键字,并引入了头文件,使得C语言也有了布尔类型。但其骨子里仍然没有真正的布尔类型。所以在CNeo中真正引入布尔类型——bool,并且它是一个原生类型,不需要这样的头文件。除此之外,在整个语法体系中只有布尔类型表达式才能作为if、while语句的表达式。

         2、更规范的整数与浮点类型:现在对整数类型的定义比较杂乱。由于早些时候iOS开发培训之C语言中使用int、short、char、long、long long等来表示一个整数对象的长度的。这里,对于不同系统环境,对这些类型的长度可能各不相同。比如在一个8位单片机中,一个int才1个字节;一个long类型为2个字节;而在现在32位系统中,一个int为4个字节;一个long也为4个字节;而在64位系统中又复杂了,在VC中,long仍然为4字节,但在GCC、Clang编译器中,long则为8个字节。正由于这种系统不确定性,所以在C99标准中引入了头文件,其中定义了int8_t、int16_t、int32_t、int64_t以及它们对应的无符号形式来指明当前整型对象的长度。

         3、移除结构体与联合体内嵌套定义命名结构体和联合体类型:当前在结构体和联合体内嵌套定义命名的结构体与联合体类型会使得其作用域变得怪异,所以我这里的想法是索性把这个语法特性移除,但是能定义匿名结构体与匿名联合体。

         4、引入当前Objective-C已经使用的module机制:这个在很大程度上能防止名字空间的污染。

         5、将数组类型类别完全独立出来。我们知道,在C语言中,一个数组对象在作为往往会被当作为一个指针,而且数组对象标识符可直接被隐式地转换为指针。这个特性据说是当时C编译器对数组类别实现有些难度而导致的。在CNeo中,一个数组对象就是一个数组对象,它不会被(也不能被)隐式或显式地转换为一个指针类型。所以,一个数组可以给另一个数组赋值以及初始化。

         6、可能引入完全对象化的属性访问:这个特性如上述博文里介绍的,将所有类型赋予一些基本的只读属性可访问。比如,对于基本数据类型有size,对于数组有size和count,其中size用于获取当前对象所占的存储空间大小,而count则表示数组的元素个数。每个对象都有address,用于获取其所在的地址;每个指针对象都有memory属性用于获取其所指对象的内容,这里memory是可读写的(除非memory的类型用const修饰则只能是只读的)。

 查看更多关于“iOS培训资讯”的相关文章>>

标签:

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号