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

学做网站看什么书中文域名交易平台

学做网站看什么书,中文域名交易平台,海口网格员,个人网站空间准备第9课 - 函数重载分析#xff08;下#xff09; 1. 重载与指针 1.1 下面的函数指针将保存哪个函数的地址#xff1f; 1.2 函数重载遇上函数指针 将重载函数名赋值给函数指针时#xff1a; #xff08;1#xff09;根据重载规则挑选与函数指针参数列表一致的候选者 #…第9课 - 函数重载分析下 1. 重载与指针 1.1 下面的函数指针将保存哪个函数的地址      1.2 函数重载遇上函数指针     将重载函数名赋值给函数指针时   1根据重载规则挑选与函数指针参数列表一致的候选者   2严格匹配候选者的函数类型与函数指针的函数类型  这里不仅需要匹配参数类型还需要匹配返回值的类型不然编译会出错 1 #include stdio.h2 #include string.h3 4 int func(int a)5 {6 return a;7 }8 9 int func(int a, int b) 10 { 11 return a b; 12 } 13 14 int func(const char *s) 15 { 16 return strlen(s); 17 } 18 19 typedef int (*pFunc)(int); // 注意typedef后面的分号 20 21 int main(void) 22 { 23 int c 0; 24 pFunc p func; 25 26 c p(1); // 根据pFunc指针的类型选择对应的重载函数 27 28 printf(c %d\n, c); 29 30 return 0; 31 } 函数重载 VS 函数指针 1.3 注意事项   1函数重载必然发生在同一个作用域中   2编译器需要用参数列表或函数类型进行函数选择  【函数指针和参数的间接关系函数指针中包含了返回值和参数类型的信息】   3无法直接通过函数名得到重载函数的入口地址 2. C 和 C 的相互调用 2.1 C 和 C 的相互调用   1实际工程中C 和C 代码相互调用是不可避免的   2C 编译器能够兼容C 语言的编译方式   3C 编译器会优先使用C 编译的方式   4extern 关键字能强制让C 编译器进行C 方式的编译      【编程实验】C 调用C 函数 1 int add(int a, int b); add.h 1 #include add.h 2 3 //该文件的编译得到目标文件add.o 4 //gcc -c add.c 5 6 int add(int a, int b) 7 { 8 return a b; 9 } add.c 1 #include stdio.h2 3 //该文件的编译4 //g main.cpp add.o5 6 #ifdef __cplusplus7 extern C {8 #endif9 10 //C中以C的方式编译将add的函数名就是目标名 11 #include add.h 12 13 #ifdef __cplusplus 14 } 15 #endif 16 17 int main() 18 { 19 int c add(1, 2); 20 21 printf(c %d\n, c); //3 22 23 return 0; 24 } main.cpp 2.2 如何保证一段C代码只会以C的方式被编译   1__cplusplus 是 C 编译器内置的标准宏定义   2__cplusplus 的意义确保C代码以统一的C方式被编译成目标文件      【编程实验】C 调用 C 函数 其中的C 函数由gcc 编译 1 //该文件的编译得到目标文件add.o2 //g -c add.c3 4 #ifdef __cplusplus5 extern C {6 #endif7 8 //C中以C的方式编译add的函数名就是目标名9 int add(int a, int b); 10 11 #ifdef __cplusplus 12 } 13 #endif add.h 1 #include add.h2 3 //该文件的编译得到目标文件add.o4 //g -c add.c5 6 #ifdef __cplusplus7 extern C {8 #endif9 10 //C中以C的方式编译add的函数名就是目标名 11 int add(int a, int b) 12 { 13 return a b; 14 } 15 16 #ifdef __cplusplus 17 } 18 #endif add.cpp 1 #include stdio.h2 #include add.h3 //编译方式4 //gcc main.c add.o5 int main()6 {7 int c add(1, 2);8 9 printf(c %d\n, c); //3 10 11 return 0; 12 } main.c 【编程实验】C 调用 C 函数 其中的C 函数由g 编译   ①假设别人提供了编译好的cpp的头文件和.o目标文件但其中的函数是以C方式编译的很明显函数名是用C方式命名的。我们的C文件里不方便使用这个的函数名。   ②解决方案做一个C的封装层对其中的函数进行一个封装然后再用extern  c编译这些封装层中的函数最后就可以在C文件中使用了。     ★ 其他人编写的C代码其中的函数名是用C方式编译的但只提供的.h和.o文件 1 int add(int a, int b); add.h 1 #include add.h 2 3 //编译命令g -c add.cpp 4 5 int add(int a, int b) 6 { 7 return a b; 8 } add.cpp 1 int addEx(int a, int b); addEx.h 1 #include add.h 2 3 //编译命令 4 //g -c addEx.cpp 5 6 extern C int addEx(int a,int b) 7 { 8 return add(a, b); 9 } addEx.cpp 1 #include stdio.h2 #include addEx.h3 //编译命令4 //gcc main.c addEx.0 add.o5 6 int main()7 {8 int c addEx(1, 2);9 10 printf(c %d\n, c); //3 11 12 return 0; 13 } main.c主文件 2.3 注意事项   1C 编译器不能以C 的方式编译重载函数即如果在extern  C块里有两个同名的函数里则会编译失败。   2编译方式决定函数名被编译后的目标名      ⅰC 编译方式将函数名和参数列表编译成目标名      ⅱC 编译方式只将函数名作为目标名进行编译 3. 小结   1函数重载是C 对 C 的一个重要升级   2函数重载通过函数参数列表区分不同的同名参数   3extern关键字能够实现C 和 C 的相互调用   4编译方式决定符号表中的函数名的最终目标名  转载于:https://www.cnblogs.com/shiwenjie/p/7169678.html
http://www.pierceye.com/news/236735/

相关文章:

  • 博客和网站的区别贵阳网站推广优化公司
  • 专业做公司网站的机构时彩网站开发
  • 网站 建设设计深圳网站建设交易
  • 网站建设氵金手指下拉十二网页设计有啥教程
  • 物流企业网站建设策划书6wordpress 搜索 很慢
  • 青岛网站设计选哪家南海区住房城乡建设和水务局网站
  • 济南冰河世纪网站建设手机可以搭建网站吗
  • 网站建设论文总结wordpress文章排序方式
  • 织梦程序来搭建网站人才招聘网最新招聘信息
  • 网站建设 客户定位支付网站建设费会计分录
  • 深圳网站设计工作室广告公司名字 三个字
  • 长沙门户网站广告网站设计公司
  • 余姚网站建设的公司wordpress 开发文档
  • 怎么建设一个微信网站莱芜金点子最新招工信息
  • 石家庄网站排名优化wordpress修改布局
  • 景安服务器管理助手如何备份网站国外做图标网站
  • 网站轮播怎么做石家庄网站建设规划
  • 免费软件网站下载深圳网站开发哪个公司好
  • 建设项目验收网站公示内网门户网站建设方案
  • 滨海做网站哪家最好宝安附近做网站公司
  • 详情页的五大模块东莞网站优化科技有限公司
  • 南阳建设网站哪家好昆明网站服务
  • 大潮建设集团有限公司 网站网站改版策划方案
  • 网站开发心路历程烟台网站建设薇企汇互联见效付款
  • 企业网站的制作周期wordpress添加数据库表
  • 广告推广营销网站网站买空间的价格
  • 转转假网站怎么做linux建设视频网站
  • 伍佰亿搜索引擎网站系统wordpress 增加备案
  • 韩国做游戏的电影 迅雷下载网站有哪些网络营销方式文献
  • 大学生兼职网站的融资方案龙华网站建设设计制作公司