在阅读代码的过程中我们经常看到_cplusplus关键字,该关键字多用于C++库的头文件,如下代码:
#ifdef __cplusplus
extern "C"{
#endif
void test_start(void);
#ifdef __cplusplus
}
#endif
该段代码中使用了__cpluscplus、extern"C"两个关键字,目的是使C/Cpp代码能够互相兼容.
上述代码中,C++编译器会将 extern "C"大括号内部的代码当做C语言来处理
由于C和C++语言的差异,为了实现某个程序在C和C++中都是兼容的,如果定义两套头文件会增加程序员的工作量,因此__cplusplus关键字的出现,解决了这一问题。值得一提的是,该关键字在C++中定义,C语言中没有该定义.
上述代码若在C++文件中出现,则实际运行的可等价如下代码:
/********在C++编译环境中编译********/
extern "C"{
void test_start(void);
}
上述代码若在C文件中出现,则实际运行的可等价如下代码:
/********在C编译环境中编译**********/
void test_start(void);