80-参考资料IX_C和C++的区别
B.9 参考资料IX:C和C++的区别
在很大程度上,C++是C的超集,这意味着一个有效的C程序也是一个有效的C++程序。C和C++的主要区别是,C++支持许多附加特性。但是,C++中有许多规则与C稍有不同。这些不同使得C程序作为C++程序编译时可能以不同的方式运行或根本不能运行。本节着重讨论这些区别。如果使用C++的编译器编译C程序,就知道这些不同之处。虽然C和C++的区别对本书的示例影响很小,但如果把C代码作为C++程序编译的话,会导致产生错误的消息。
C99标准的发布使得问题更加复杂,因为有些情况下使得C更接近C++。例如,C99标准允许在代码中的任意处进行声明,而且可以识别 // 注释指示符。在其他方面,C99使其与C++的差异变大。例如,新增了变长数组和关键字 restrict 。C11缩小了与C++的差异。例如,引进了 char16_t 类型,新增了关键字 _Alignas ,新增了 alignas 宏与C++的关键字匹配。 C11 仍处于起步阶段,许多编译器开发商甚至都没有完全支持C99。我们要了解C90、C99、C11之间的区别,还要了解C++11与这些标准之间的区别,以及每个标准与C标准之间的区别。这部分主要讨论C99、C11和C++之间的区别。当然, C++ 也正在发展,因此,C和C++的异同也在不断变化。