__cplusplus、extern “C”关键字

__cplusplus、extern “C”关键字   我们在阅读程序时,经常会见到__cplusplus关键字,比如下面的代码:#ifdef__cplusplusextern"C"{#endifvoid*memset(void*,int,size_t);#ifdef__cplusplus}#endif  这里面,两种关键字,都是为了实现C++与C兼容的,extern“C”是用来在C++程序中声明或…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

    我们在阅读程序时,经常会见到__cplusplus关键字,比如下面的代码:

#ifdef __cplusplus
extern "C" {
#endif

void *memset(void* ,int , size_t);

#ifdef __cplusplus
}
#endif

Jetbrains全家桶1年46,售后保障稳定

   这里面,两种关键字,都是为了实现C++与C兼容的,extern “C”是用来在C++程序中声明或定义一个C的符号,比如:
 

   extern “C” {

   int func(int);

  int var;

 }

   上面的代码,C++编译器会将在extern “C”的大括号内部的代码当做C语言来处理。

   由于C和C++毕竟是不同的,为了实现某个程序在C和C++中都是兼容的,如果定义两套头文件,未免太过麻烦,所以就有了__cplusplus的出现,这个是在C++中特有的,__cplusplus其实就是C++,也就有了上面第一段代码的使用,如果这段代码是在C++文件中出现,那么经过编译后,该段代码就变成了:

/**********C++文件中条件编译后结果***************/
extern "C" {
void *memset(void* ,int , size_t);
}

  而在C文件中,经过条件编译,该段代码变成了:

 

/**********C文件中条件编译后结果*************/
void *memset(void* ,int , size_t);

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210008.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Idea激活码永久有效Idea2017.3.6激活码教程-持续更新,一步到位

    Idea激活码永久有效Idea2017.3.6激活码教程-持续更新,一步到位Idea激活码永久有效2017.3.6激活码教程-Windows版永久激活-持续更新,Idea激活码2017.3.6成功激活

    2022年6月17日
    29
  • java物联网框架_物联网学java吗

    java物联网框架_物联网学java吗基于java的物联网架构实现前言:19年11月开始从【金融】行业转【物联网】,路途坎坷,一个人摸索前进,不过也学到了很多新的东西,交了很多好朋友,在此感谢各位!以下是一些经验分享,希望能帮到有需要的朋友。1、架构思路考虑了很久打算用springboot+mysql去实现,因为熟悉这个框架,而且能减轻70%的机械性开发工作量,以后改springcloud也方便(注意逻辑实现不然工作量很大)。物联网和互联网可以说是有共同点的,但是也有很多的不一样。先说协议,互联网很多都是https或者ht

    2022年9月18日
    4
  • Java输入数组

    Java输入数组Java字符串形式输入转化为数组形式importjava.util.Arrays;importjava.util.Scanner; publicstaticvoidmain(String[]args){ Scannersc=newScanner(System.in); System.out.println(“Pleaseenteranarray:”);//不同数字用空格隔开 Stringarr[]=null;//开辟字符

    2022年6月26日
    33
  • 二维码转换成短链接_二维码解析url

    二维码转换成短链接_二维码解析urlVue生成二维码实战案例,vue把url地址转化为二维码手机扫码打开

    2022年9月27日
    2
  • 通信信道带宽为1Gbit/s,端到端时延为10ms。TCP的发送窗口为65535字节。试问: 可能达到的最大吞吐量是多少?信道的利用率是多少?

    通信信道带宽为1Gbit/s,端到端时延为10ms。TCP的发送窗口为65535字节。试问: 可能达到的最大吞吐量是多少?信道的利用率是多少?通信信道带宽为1Gbit/s,端到端时延10ms。TCP的发送窗口为65535字节。试问:一可能达到的最大吞吐量是多少?信道的利用率是多少?由发送时延=数据长度/信道带宽=655358bit/1Gb/s=0.5242810-3s=0.52428ms来回的传播时延=10ms2=20ms总时延=20.52428ms所以每秒可以产生1000/20.52428个窗口最大吞吐量=6553681000/20.52428=25544769bit/s信道利用率=最大吞吐量/信道带宽=25544769bit/s/

    2022年10月11日
    8
  • Qt 编译方式之 qmake[通俗易懂]

    Qt 编译方式之 qmake[通俗易懂]作者:billy版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处QMake简介Qt的帮助文档中对于qmake是这样介绍的:qmake工具有助于简化不同平台上开发项目的构建过程。它自动生成生成makefile,因此创建每个makefile只需要几行信息。您可以将qmake用于任何软件项目,无论它是否使用qt编写。qmake是Qt工具包中带的一个非常…

    2022年5月19日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号