什么是"Clean C",它与标准 C 有何不同?

What is "Clean C" and how does it differ from standard C?

本文关键字:标准 何不同 Clean 什么      更新时间:2023-10-16

纯C和C++中的C有什么区别

Lua所基于的"CleanC"有哪些细节?这些功能是什么?

Clean C是Harbison&斯蒂尔的书(C:参考手册,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++中的保留关键字