30 October 2023

C++ 核心指南目录

“If you must use C, use the common subset of C and C++, and compile the C code as C++”

理由

这个子集可以由 C 或 C++ 编译器编译。通过 C++ 方式编译,可以不纯 C 的类型检测做的更好

例子

int* p1 = malloc(10 * sizeof(int));                      // not C++
int* p2 = static_cast<int*>(malloc(10 * sizeof(int)));   // not C, C-style C++
int* p3 = new int[10];                                   // not C
int* p4 = (int*) malloc(10 * sizeof(int));               // both C and C++

强化

  • 标记以 C 方式编译代码的地方。
    • C++ 编译器要求代码是有效的 C++,除非你用了 C 扩展选项。