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

#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定义了不同的预编译选项,在开发时,注意收集。

cplusplus解析的更多相关文章

  1. C++中的虚函数解析[The explanation for virtual function of CPlusPlus]

    1.什么是虚函数?                                                                                            ...

  2. sphinx 配置文件全解析

    sphinx的配置文件是在配置的时候最容易出错的了: 我们先要明白几个概念: source:数据源,数据是从什么地方来的. index:索引,当有数据源之后,从数据源处构建索引.索引实际上就是相当于一 ...

  3. mac 下 sphinx + mysql + php 实现全文搜索(xampp)(3)sphinx 的配置项解析

    source:数据的来源,数据是从什么地方来的. index:索引,当有数据源之后,从数据源处构建索引.索引实际上就是相当于一个字典检索.有了整本字典内容以后,才会有字典检索. searchd:提供搜 ...

  4. C语言文件操作解析(五)之EOF解析(转载)

      C语言文件操作解析(五)之EOF解析 在C语言中,有个符号大家都应该很熟悉,那就是EOF(End of File),即文件结束符.但是很多时候对这个理解并不是很清楚,导致在写代码的时候经常出错,特 ...

  5. DLL模块:extern "C"的简单解析

    1.揭密extern "C" extern "C"包含双重含义,从字面上即可得到:首先,被它修饰的目标是 "extern”的:其次,被它修饰的目标是 ...

  6. externn "C"解析

    1.揭密extern "C" extern "C"包含双重含义,从字面上即可得到:首先,被它修饰的目标是 "extern”的:其次,被它修饰的目标是 ...

  7. vector的成员函数解析

    vector是线性容器,它的元素严格的依照线性序列排序,和动态数组非常相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅能够使用迭代器(iterator)訪问元素,还能够使用指针 ...

  8. cstring头文件函数解析

    原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5643829.html 在使用由字符数组或指针组成的字符串的时候,要用到一些函数,这些函数通常包含在 ...

  9. VS2013 OpenGL 开发程序时: error LNK2019: 无法解析的外部符号 __imp____glutInitWithExit@12,error LNK2019: 无法解析的外部符号 __imp____glutCreateWindowWithExit@8

    环境:Windows 下 OpenGL ,Used in VS2013 前言:刚接触 OpenGL 的人,第一件事当然就是配置环境,说起配置环境 OpenGL 和 DirectX 相差不多,同时也基本 ...

随机推荐

  1. 实现经常使用的配置文件/初始化文件读取的一个C程序

    在编程中,我们常常会遇到一些配置文件或初始化文件. 这些文件通常后缀名为.ini或者.conf.能够直接用记事本打开.里面会存储一些程序參数,在程序中直接读取使用.比如,计算机与server通信.se ...

  2. [Angular 2] Understanding OpaqueToken

    When using provider string tokens, there’s a chance they collide with other third-party tokens. Angu ...

  3. [MODX] 0. Mangement System Overview

    In Modex, there are three tabs: Resoources, Elements & Files First: 'Files' is the place where t ...

  4. Office 365 Certificate Exam Resources

    70-321 Deploying Office 365 Deploying Office 365 Jump Start (01): Infrastructure Planning Deploying ...

  5. 使用Java高速实现进度条

    基于有人问到如何做进度条,以下给个简单的做法: 主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax. ...

  6. ios--uitextfield动态限制输入的字数(解决方式)

    1.定义一个事件: -(IBAction)limitLength:(UITextField *)sender { bool isChinese;//推断当前输入法是否是中文 if ([[[UIText ...

  7. SAP BW 通过视图创建数据源(无单位)

    因业务明细表中数量没有单位,所以BW创建数据源时,需做增强 数据表: ZDB_H(抬头) ZDB_I(明细) ECC 系统中: 1.创建视图ZVDBWQ,因明细表中数量没有单位,所以创建视图时不包括数 ...

  8. Percona-Galera-Monitoring-Template监控模板说明

    http://blog.chinaunix.net/uid-16844903-id-4054635.html 官网链接:http://www.percona.com/doc/percona-monit ...

  9. PHP.8-HTML+CSS(二)-HTML详解

    HTML+CSS HTML参考手册[http://www.w3school.com.cn/tags/index.asp] 0.HTML主体标记 代码分为三部分编写 <html> 是网页文件 ...

  10. WinServer 之 Windows Server 2008 R2安装IIS

    1.在"服务器管理器"中选择"添加角色",如下图: 2.在"服务器角色"步骤选择"Web 服务器(IIS)",如下图: ...