你知道第一个C语言C++编译器是如何诞生的吗( 五 )

下面是 C99 的关键字:

仔细看看 , 其实其中有很多关键字是为了帮助编译器进行优化的 , 还有一些是用来限定变量、函数的作用域、链接性或者生存周期(函数没有)的 , 这些在编译器实现的早期根本不必加上 , 于是可以去掉 auto restrict extern volatile const sizeof static inline register typedef , 这样就形成了 C 的子集 , C3 语言 , C3 语言的关键字如下:

再想一想 , 发现 C3 中其实有很多类型和类型修饰符是没有必要一次性都加上去的 , 比如三种整型 , 只要实现 int 就行了 , 因此进一步去掉这些关键词 , 它们是:unsigned float short char(char 是 int) signed _Bool _Complex _Imaginary long , 这样就形成了我们的C2语言 , C2 语言关键字如下:

继续思考 , 即使是只有 18 个关键字的 C2 语言 , 依然有很多高级的地方 , 比如基于基本数据类型的复合数据结构 , 另外我们的关键字表中是没有写运算符的 , 在 C 语言中的复合赋值运算符 ->、运算符的 ++、–– 等过于灵活的表达方式此时也可以完全删除掉 , 因此可以去掉的关键字有:enum struct union , 这样我们可以得到 C1 语言的关键字:

推荐阅读