C++ 设计时保留了对 C 的广泛兼容性,但并非 100% 兼容,存在若干关键差异。

C 代码通常可在 C++ 编译器中编译,但需注意以下不兼容点:

差异说明
类型检查更严格C++ 不允许 void* 隐式转换,C 允许
新增关键字newdeleteclassbool 等不可用作变量名
函数重载C++ 支持同名函数重载,C 不支持
结构体扩展C++ 结构体可包含函数和构造函数
默认参数C++ 支持函数默认参数,C 不支持
初始化表达式C++ 允许复杂表达式初始化,C 仅支持常量表达式

实践中,许多项目用 C++ 编译器编译 C 代码,以获得更严格的类型检查。迁移大型 C 项目时建议逐步处理不兼容问题。