当前位置: 首页 > news >正文

泗阳网站建设公司wordpress php开发手册

泗阳网站建设公司,wordpress php开发手册,南昌网络排名优化,怎样连接服务器目的 extern "C"是经常用到的东西,面试题目也经常出现,然则,实际用时,还是经常遗忘,因此,深入的了解一下,以增强记忆。 extern "C"指令非常有用,因为C和C的近亲…

目的

extern "C"是经常用到的东西,面试题目也经常出现,然则,实际用时,还是经常遗忘,因此,深入的了解一下,以增强记忆。
extern "C"指令非常有用,因为C和C++的近亲关系。

作用

注意:extern "C"指令中的C,表示的一种编译和连接规约,而不是一种语言。C表示符合C语言的编译和连接规约的任何语言,如Fortran、assembler等。
另外,extern "C"指令仅指定编译和连接规约,但不影响语义。例如在函数声明中,指定了extern “C”,仍然要遵守C++的类型检测、参数转换规则。
综上所述,extern "C"的真实目的是实现类C和C++的混合编程。在C++源文件中的语句前面加上extern “C”,表明它按照类C的编译和连接规约来编译和连接,
而不是C++的编译的连接规约。这样在类C的代码中就可以调用C++的函数或变量等。

生成符号的不同

在C和C++中,生成函数符号的方式有所不同。
在C语言中,函数的符号是通过函数名和参数类型来生成的。如果两个函数的名字相同并且参数类型也相同,那么它们的符号就是一样的。
在C++中,函数符号的生成则更加复杂,主要是因为C++支持函数重载,也就是说,两个函数可以有相同的名字,
只要它们的参数类型或者参数数量不同。为了区分这些同名函数,
C++编译器会将函数的返回类型,函数名,参数类型,参数数量,参数顺序等因素考虑进去,生成一个独一无二的符号。

情况

上面理论讲的很清楚,下面用例子试试:

先弄一个C++的函数例子:

cppFunc.h:

#pragma once
#include <stdio.h>
void cppFunc(int num);
cppFunc.cpp:
#include "cppFunc.h"
void cppFunc(int num)
{printf("enter function cFunc num=%d\n", num);printf("exit function cFunc\n");
}

主函数:

#include <iostream>
#include "cppFunc.h"
int main()
{cppFunc(10);std::cout << "Hello World!\n";
}

运行情况:
在这里插入图片描述

符号是这样的:
在这里插入图片描述

c++调用C函数的例子
cFunc.h:

#pragma once
#include <stdio.h>
void cFunc(int num);

cFunc.c:

#include "cFunc.h"
void cFunc(int num)
{printf("enter function cFunc num=%d\n", num);printf("exit function cFunc\n");
}

主函数:

#include <iostream>
#include "cFunc.h"
//#include "cppFunc.h"
int main()
{cFunc(8);//cppFunc(10);std::cout << "Hello World!\n";
}

运行情况:
在这里插入图片描述

上面表明,C++按照C++的函数名规则去链接函数,符号为:?cFunc@@YAXH@Z 实际在OBJ中找不到。
在这里插入图片描述

从上图可知:c语言的名字就是 cFunc,所以找不到。
怎么找到呢?
主函数修改如下:

#include <iostream>
extern "C"
{
#include "cFunc.h"
}
//#include "cppFunc.h"
int main()
{cFunc(8);//cppFunc(10);std::cout << "Hello World!\n";
}

运行情况:
在这里插入图片描述

这样就找到了,这样就按照C的规则去找相应的函数。

总结

extern “C”{},解决了C与C++编译结果的混用,如下图所示:
在这里插入图片描述

http://www.yayakq.cn/news/951814/

相关文章:

  • 网站免费大全专业刷单网站建设
  • 网站如何后台管理wordpress评论是关闭还是开启
  • 网站怎么快速排名个人艺术作品网站建设策划书
  • 字体logo设计在线生成网络优化关键词
  • 网站开发公司会计处理什么是网站建设中的专用主机
  • 口碑好的企业网站开发wordpress标题超链接
  • 网站权重接口软件技术论坛
  • 餐饮网站建设背景如何建设教育信息网站
  • 如何创建一个网站的流程松岗做网站
  • 做网站 图片 文件夹 放哪儿明天去广州需要隔离吗
  • 做网站寄生虫网页设计添加图片插件
  • 上海网站建设企业排名东莞建设网住房保障专栏20批公示栏
  • 网站灰色建设北京传媒公司排行榜
  • 南阳做网站费用厦门排名推广
  • 可拖拽式网站建设做外贸需要哪些网站有哪些
  • 宁海县建设局网站下属单位行业网站特点
  • 网站认领ps教程自学网下载
  • 哪里网站建设专业南京房地产网站
  • 公司做网站设计要注意网站诊断书怎么做
  • ftontpage如何做网站wordpress主题文件夹在哪里
  • 临沂苍山网站建设北京市电力建设公司网站
  • 中国建设银行重庆网站首页医院网站建设情况说明
  • 外贸出口营销网站游戏推广怎么快速拉人
  • 旅游电子商务网站建设调查问卷叫别人做网站需要注意什么
  • 有一个域名做网站包装设计需要学什么软件
  • 网站开发与管理能力王野天是谁
  • 宽屏网站js服务器建设一个自己的网站
  • 江苏省宿迁市建设局网站最新备案的网站
  • 湛江专业网站制作酷站网站
  • 免费的h5制作网站久久建筑有限公司