从现在开始,你的脑子里应该树立 <mark>『C++ 不是 C 的一个超集』这个观念</mark>(而且从一开始就不是)。在编写 C++ 时,也应该尽可能的避免使用诸如 void* 之类的程序风格。而在不得不使用 C 时,应该注意使用 extern “C” 这种特性,将 C 语言的代码与 C++代码进行分离编译,再统一链接这种做法,例如:

// foo.h#ifdef __cplusplusextern "C" {
#endif

int add(int x, int y);

#ifdef __cplusplus
}
#endif

// foo.c
int add(int x, int y) {
return x+y;
}

// main.cpp#include "foo.h"
int main() {
add(1, 2);
return 0;
}

应先使用 gcc 编译 C 语言的代码:

gcc -c foo.c

编译出 foo.o 文件,再使用 g++ 将
C++代码和 .o 文件链接起来(或者都编译为 .o 再统一链接):

 g++ main.cpp foo.o -o main