C与C++的兼容性 C语言和C的关系相當密切但是也存在许多显著的差异C标准起源于早期C标准 并被设计为与当时的C语言在源代码编写和链接方面很大程度上兼容 因此两种语言的开发工具例如IDE和编译器通常被集成到单个产品中程序员可以自己选择编写的是C还是C开发工具通常会根据程序员的选择使用不同的编译器和链接器或不同的库 但是C并不是C的子集 一般的 C 代码不经修改很难被一些严格符合C标准的C编译器成功编译同样C 引入了许多 C 中没有的特性所以几乎所有用 C 编写的代码都无法被 C 编译器成功编译在这篇文章中我们主要讨论的是它们在公共部分的差异比如在C语言中合法的代码到了C中成为了不合法的代码或一段代码在C和C中表现出不同的行为 C的创始人Bjarne Stroustrup建议 C和C应该尽可能减小差异以最大限度地提高这两种语言的兼容性而另一些人则认为C和C毕竟是两种不同的语言虽然C起源于C因此它们之间的兼容性并不是那么重要 而ANSI是这样看的我们赞同保持C与C的最大公共子集原则同时保持它们的差别使这两种语言继续独立发展委员会希望C成为重要的和强有力的语言 截止到C和CxC 还是不支持部分C语言特性如变长数组原生复数支持和restrict英语Restrict类型修饰符英语Type qualifier另一方面与C相比C通过合并C功能例如注释允许声明出现在代码中而不只是在函数头减少了一些其他不兼容性