cplusplus解析

经常在头文件包含代码里面看到如下代码

#ifndef MAC_API_H
#define MAC_API_H

#ifdef __cplusplus
extern “C”{
#endif
………………………

#ifdef __cplusplus
};
#endif

#endif  /*MAC_API_H*/

解释:C/C++编译器对函数和变量名的命名方法不一样,例如C++中重载的函数有多个名字,而C的函数只有一个名字。这样,当C编译器去引用C++编译器编译出来的符号时,会找不到链接。C++中定义了__cplusplus,而C语言没有该定义。通过这个区别,可以识别代码是C还是C++。

当一个头文件可能既被C程序引用,又被C++程序引用时,需要使用如上代码进行区分。为了在C++代码中调用用C写成的库函数,当C++编译的应用程序需要调用C编写的函数库,两者编译器对重载函数的处理不同,造成C++链接器无法找到C库定义的函数。因此,需要用extern “C”来告诉C++编译器,该文件是用C语言编写的,请用C的方式来链接它们。

 

 

C/C++编译器预定义的五个帮助宏名。

__LINE__ : 代表当前源码中的行号,整数

__FILE__ : 代表当前文件的名字,字符串

__TIME__: 代表源文件编译时间,字符串,格式为HH:MM:SS

__DATE__: 代表源文件编译日期,字符串,格式为m dd yyyy

 

不同IDE定义了不同的预编译选项,在开发时,注意收集。

 

 

 

原文地址:https://www.cnblogs.com/cherishui/p/3689379.html