随笔分类 - C/C++相关
主要讨论C/C++语言核心以及标准库的东东。
摘要:C语言诞生于1970年,当时在AT&T实验室由Dennis Ritchie主导开发的。据说当时仅用了一周的时间就做好了C语言编译器,所以尽管C语言从90年正式纳入ISO标准委员会,其编号为ISO/IEC 9899。尽管经历了C99与C11标准的修改历程,但为了向前兼容,有一些比较古怪的特性依然被保留。
阅读全文
摘要:Objective-C中,定义并使用带有不定参数个数的对象方法与C函数类似,规则上也要求不定参数列表中必须至少要有一个形参,然后参数列表的最后跟省略号表示不定参数。省略号不能放在参数当中部分,只能放在末尾。
阅读全文
摘要:Objective-C 2.0从2006年正式发布至今已经有10年了。Apple在此期间也不断地为其注入新的语法特性,比如Blocks、NSNumber literal、NSArray literal、NSDictionary literal、@() compund literal、Object subscripting、instancetype、lightweight generics等等。然而,其核心语法变化不大。
阅读全文
摘要:编程语言中的字面量在Objective-C中的举例
阅读全文
摘要:Objective-C是本人用过的最佳类C、面向对象的编程语言。Objective-C与标准C完美兼容,而在此基础上又加上了将面向对象的基础概念诠释得最好的SmallTalk元素,使得它既简洁、又灵活,绝对是做商业化项目的首先编程语言工具。它跟Java相比更接近底层,你可以直接在里面写内联汇编或直接与汇编文件一起连接(因为它就是C语言,在C语言基础上扩展了SmallTalk的消息机制与OO机制)。与C++相比,它显然又简洁许多,C++里的神马多继承了、虚拟继承了,坑之多数不尽。Objective-C非常容易上手,而且语法也不复杂,所以不会导致程序员出现过于良莠不齐的现象,整个项目维护起来也十分容易。
阅读全文
摘要:在C11(ISO/IEC 9899:2011)标准中引入了对UTF8、UTF16以及UTF32字符编码的支持。
阅读全文
摘要:Visual Studio2013终于开始比较良好地支持C99特性了。在此之前,如果用C语言写代码的话,变量名都需要放到函数体的前面部分,代码写起来十分别扭。
而Visual Studio2013中的C编译器已经支持了不少C99标准,让我来为大家盘点一下。
阅读全文
摘要:在C语言时代,语法与库的实现基本上是完全独立的。几乎所有的C语言标准库都是与编译器实现相对独立的,仅与当前系统环境耦合。这里只有函数不定参数的实现是需要根据语言规范,结合当前系统环境,由库自己实现的。
阅读全文
摘要:C11标准中,一个非常重大的特性更新就是增加了Generic Selection这个特性。这个特性能使得C11支持轻量级的泛型编程,使得可以把一组具有不同类型而却有相同功能的函数抽象为一个接口。
对于_Generic的使用可参见俺这篇博文——http://www.cnblogs.com/zenny-chen/archive/2012/09/20/2695381.html
阅读全文
摘要:Visual C++中使用内联纯汇编及其它
阅读全文
摘要:C语言中具有不定参数个数的函数定义,因此可以很灵活地定义一些不确定实参个数的函数。像C标准库中的printf函数就是如此。
在某些时候,比如在做嵌入式设备,我们自己开发一套打印调试数据的接口(比如通过UART或USB),如果自己完全根据printf中的数据格式来写比较浪费时间和资源。幸亏C语言标准库中提供了vsprintf库函数能够将标准的格式字符串与后面的参数自动组织成printf输出的字符串式样。这样我们可以直接通过使用这个库函数来写自己定制的输出函数。
阅读全文
摘要:在2011年末,ISO/IEC 9899标准委员会公布了C语言的最新官方标准——ISO/IEC 9899:2011,俗称C11标准。这个标准对C语言增加了轻量级的范型、原子操作接口、宽字符表达、多线程接口等诸多特性。
不过由于现在有些老旧的编译器连C99标准都没完全支持好,所以这边主要讲述如何应对C99标准中所提供的便利的语法特性而C90则没有的问题。比如,常用的C99的两个特性是不定参数的宏定义以及结构体、联合体的初始化器。
阅读全文
摘要:在ISO/IEC9899:1999标准(俗称C99)标准中引入了一个对于信号处理领域非常有用切使用起来也非常方便的库——复数库。对你的C语言编译器开启c99、gnu99、c11或gnu11任一一项之后在源文件中包含即可使用。
阅读全文
摘要:目前大部分主流编译器的最新版本均支持了C++11标准(官方名为ISO/IEC14882:2011)大部分的语法特性,其中比较难理解的新语法特性可能要属变长参数模板(variadic template)了。下面先介绍一下这个语法特性在C++11标准中的描述。
阅读全文
摘要:XCode4.6出来之后,在Apple的官方Release Notes中有这么一句话:“Support for the C++11 user defined literals and unrestricted unions.”。这么一来,在最新的XCode4.6中所使用的Apple LLVM4.2对ISO/IEC14882:2011(即C++11)标准的支持已经差不多基本到位了,尤其是语言核心上的支持。
阅读全文
摘要:今天下了Apple最新的XCode4.6,里面包含了最新的Apple LLVM4.2编译器,其中令人十分欣喜的是C语言编译器语言选项中多了C11以及gnu11。
阅读全文
摘要:5.3 单目表达式
阅读全文
摘要:本人的C开源库——基于GNU11标准
阅读全文
摘要:Apple LLVM4.0已经支持了C11标准中的关键特性——泛型机制。尽管C11中的泛型机制比起C++的来要显得简陋不少,但是在做库的时候仍然十分管用。
下面我们就来看一下C11标准中的泛型表达式。
阅读全文
摘要:5.2 后缀表达式
阅读全文