从现在开始,你的脑子里应该树立 <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