#ifdef __cplusplus extern "C" { #endif .... #ifdef __cplusplus } #endif 第一点:条件编译 我觉得这个是个很好的东西,不管是用在调试上,还是用在写适合在多种环境下跑的程序。例如下面一段程序: #ifdef DEBUG printf("打印一些调试信息"); #endif 在我们的程序中可以写很多这种语句,然后设一个开关,就是DEBUG,如果想打印调试信息,就在文件头写个 #define DEBUG,如果最后要发布了,不像打印了,就注释调那一行,不用去注释每一处打印调试信息的地方。 多环境:如 #if (defined(LINUX)) #define DEVICE_PREFIX "/dev/rfm2g" #define PROCFILE "/proc/rfm2g" #elif defined(RFM2G_VXWORKS) #define DEVICE_PREFIX "RFM2G_" #elif defined(SOLARIS) #define DEVICE_PREFIX "/dev/rfm2g" #elif defined(WIN32) #define DEVICE_PREFIX "////.//rfm2g" #endif 这一段代码就可以在多个操作系统上跑。 第二点:__cplusplus 两个下划线后跟一些小写字母,这些都是系统预留的名词,cplusplus 这个就是C++ 的意思。 #ifdef __cplusplus extern "C" { #endif .... #ifdef __cplusplus } #endif C和C++ 的编译器都可以编译这一段程序。用这种方法就可以保持C/C++的兼容性, 当使用C++编译的使用编译器中会自动定义_cplusplus这个宏用这种方法就可以保持C/C++的兼容性, 当使用C++编译的使用编译器中会自动定义_cplusplus这个宏。