zoukankan      html  css  js  c++  java
  • 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定义了不同的预编译选项,在开发时,注意收集。

     

     

     

  • 相关阅读:
    缓存概念用法理解
    shiro
    Java生成验证码并进行验证(转)
    Java 8 Optional类深度解析(转)
    jdk8 stream可以与list,map等数据结构互相转换
    Java8初体验(二)Stream语法详解(转)
    Java 8 Optional 类
    cors跨域深刻理解
    httpclient连接池
    [C++] [算法] KMP算法
  • 原文地址:https://www.cnblogs.com/cherishui/p/3689379.html
Copyright © 2011-2022 走看看