1、在C++程序中调用被C编译器编译过的函数,为什么需要加上extern “C”?

C++语言支持函数重载,C语言不支持函数重载,函数被C++和C语言的不同。假设某个函数的原型为void foo(int x, int y)。该函数被C编译器编译后在哭的名字为_foo,而C++编译器会产生像_foo_ini_int之类的名字。

C++提供了C链接交换指定符号extern "C"解决名字匹配问题。

2、头文件中的ifndef/define/endif是干什么用的?

头文件中的ifndef/define/endif是条件编译的一种,除了头文件被防止重复引用(整体)。还可以防止重负定义(变量、宏或结构体)。