vlambda博客
学习文章列表

将C++代码改为纯C语言代码,GCC C11与C++的差别小结,设想C--语言

用下面的命令可查看GCC所支持的C语言标准:

gcc -E -dM -</dev/null | grep STDC_VERSION

我得到的结果是:201710L,官方文档对此的解释如下:

the value 201710L signifies the 2017 revision of the C standard (which is otherwise identical to the 2011 version apart from correction of defects)

基本上就是C11

通过一些实验,发现C11与C++有如下差别:

  1. C11不支持函数重载,而C++支持参数不同的同名函数

  2. C11不支持给函数参数指定默认值,C++支持

  3. C11不支持在编译阶段使用const定义的数据,C++支持

  4. C11不支持inline定义内联函数,C++支持

这些差别背后有如下含义:

  1. C语言十分推崇简洁,能不支持的功能一律不支持,实在是不支持就活不下去了才支持,遵循极简派剃刀原则。C++则是能支持的都要支持,一样也不想少。

  2. C语言对宏的依赖度非常大,可以说,不会宏,或者对宏不熟练,表示C语言还没有入门。C++则是想尽量减少对宏的依赖。

我个人是明确表示支持C语言的做法的,我想以后开发一个C--语言,在C语言的基础上进一步对程序语言进行简化:

第一个 - 是去掉C语言的类型强制,改为统一的字节数目类型

第二个 - 是重仓指针,让指针全体通用且能漫天飞舞,无所不能。

第三个 - 是对宏功能进一步放开,让宏支持多行代码,可以层层嵌套等。

期待我的C--能早日研发成功。