CppCoreGuidelines CPL.1 能用 C++ 的时候就不要用 C
29 October 2023
“Prefer C++ to C”
C 和 C++ 是关系紧密的语言。他们都源自 1978 年的经典 C,都在 ISO 标准委员会不断发展。人们做了很多尝试,使得他们互相兼容,但是互相都不是对方的一个子集。
理由
C++ 提供更好的类型检测,更多的标记符号支持。C++ 支持更好的高级语言特性,经常产生速度更快的代码。
例子
char ch = 7; void* pv = &ch; int* pi = pv; // not C++ *pi = 999; // overwrite sizeof(int) bytes near &ch
C 中隐式的从 void*
转换类型很难发现,也没有任何强化。尤其是本例子中,我们违反了规则,不该转换类型到更严格的字节对齐。
强化
用 C++ 编译器。