什么是“Clean C”,它与标准C有什么不同?

C ++中纯C和C之间有什么区别?我想知道Lua所基于的’Clean C’的一些细节。 有谁知道这些function?

Clean C是Harbison&Steele一书中的一个术语( C:A参考手册 ,Prentice Hall)。 如果程序可以由标准C编译器和标准C ++编译器编译,则称该程序用Clean C编写; 并且它的执行不会从两个编译器产生不同的可观察行为(优化问题无关紧要)。

令我觉得最明显的是,在C ++中,你必须强制转换malloc的返回值。 结构也是在C ++中自动进行类型化的。

始终将C编译器用于C代码,而不是C ++。 C ++与C不完全兼容。

其他一些差异可能是:

  • 在C中,声明void func(); 声明一个没有指定其参数是什么的函数,而在C ++中,void func(); 相当于C void func(void)’,不带参数;
  • C ++中需要原型,而它通常只是C中的警告;
  • 字符常量的类型(如’a’)在C中是int,在C ++中是char;
  • 字符串文字的类型是C中的char []和C ++中的const char [];
  • C中的一些合法变量名称(如类)是C ++中的保留关键字。