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

抚顺网站开发网站建设会议通知

抚顺网站开发,网站建设会议通知,网页制作培训 少儿编程,新开传奇手游网站大全学了就忘#xff0c;忘了再学。有时感觉自己几乎就是一个跳梁小丑。没有办法#xff0c;只好多记些笔记。本文版权归作者和博客园共有FROM#xff1a; http://www.cnblogs.com/graphics/archive/2010/12/24/1916343.html经常看到如下代码#xff1a;#ifdef _cplusplusexter…学了就忘忘了再学。有时感觉自己几乎就是一个跳梁小丑。没有办法只好多记些笔记。本文版权归作者和博客园共有FROM http://www.cnblogs.com/graphics/archive/2010/12/24/1916343.html经常看到如下代码#ifdef _cplusplusextern C {#endif#include XXX.h#ifdef _cplusplus}#endif解释extern C的作用是告诉C编译器下面的代码按照C的方式进行编译说白了不要对这些函数进行名字重整function name mangling。通常在C程序中使用C函数或者模块时需要用到这个功能。原因C为了支持函数重载将编译后的函数名做了重整mangled name比如下面的函数int add(int a, int b) ;在C中编译完的名字就是add而在C中编译完就变成了add_int_int(举例而已实际因编译器而异)这样在函数名字后面加上参数的类型就可以区分不同的重载函数了比如还有另一个函数float add(float a, float b) ;在C中它会被编译成add_float_float这就是C区分重载函数的机制可是问题也随之而来C进行名字重整而C不进行重整。当C程序引用C的函数时它会按照重整后的名字去目标文件.obj中去寻找对应的函数而目标文件中存放的却是C版本的函数名字对不上所以根本找不到怎么办呢这就是extern “C” 存在的一个原因它告诉C包含在extern “C”{ //…}块中的东西是C版本的,你编译的时候不要进行名字重整否则你链接的时候就无法找到我于是上面的代码也就不难理解了光说不练是扯淡上代码我们简单的定义一个C头文件和实现文件只包含一个add函数CClass.h 内容如下#ifndef __CClass_H__#define __CClass_H__extern int add(int a, int b) ;#endif // end __CClass_H__CClass.c 内容如下#include CClass.hint add(int a, int b){return a b ;}下面我们用一个C程序来引用这个C文件main.cpp 内容如下#define _cplusplus // 为了测试强加一句#ifdef _cplusplusextern C {#endif#include CClass.h#ifdef _cplusplus}#endif#include iostreamusing namespace std ;int main(void){int result add(1, 2) ;cout result endl ;system(pause) ;return 0 ;}如果没有#include iostream之前那些代码而只是仅仅包含#include CClass.h一句你就会得到下面的错误error LNK2019:unresolved external symbol int __cdecl add(int,int) (?addYAHHHZ) referenced in function _main显然这是一个链接错误因为找不到对应的函数定义当然你也可以简写成下面的形式直接在extern “C”块中包含你想调用的函数extern C{int add(int a, int b) ;};#include iostreamusing namespace std ;int main(void){int result add(1, 2) ;cout result endl ;system(pause) ;return 0 ;}这在C程序中是没有问题的但是如果是在C程序中则会出现编译错误因为C中不允许extern “C”出现另一个需要extern “C”的场合是当C程序调用C的东西时按照如下步骤做即可1. 在C的.h文件中用extern “C”{}声明将被C程序使用的函数2. 在C的.cpp文件中实现上面的函数3. 在.c文件中用extern声明要使用的C函数4. 使用即可注意切不可在.c文件中包含C的.h文件那样编译无法通过上代码CPPClass.h中声明add函数#ifndef __CPPClass_H__#define __CPPClass_H__extern C{int add(int a, int b) ;};#endif // end __CPPClass_H__CPPClass.cpp实现add函数#include CPPClass.hint add(int a, int b){return a b ;}main.c 内容如下#include stdio.h//#include CPPClass.h // 不要包含头文件,否则编译不过extern int add(int a, int b) ; // 只需显示声明要调用的函数即可int main(void){int result add(1, 2) ; //使用函数printf(%d, result) ;return 0 ;}
http://wiki.neutronadmin.com/news/70196/

相关文章:

  • 如何制作个人网页兼职福州seo代运营
  • 信专业广州网站建设做电商网站前端的技术选型是
  • 手机怎么打开禁止访问的网站学习网站建设论文
  • 用html做网站的背景图怎么弄国家企业信用信息查询公示系统
  • 新建建设兵团科技局网站怎么做视频解析网站
  • 响应式网站一般做几个版本淮安网站制作设计
  • 查询网站的外链深入解析wordpress...
  • 江西省建设工程安全质量监督管理局网站wp 企业网站模板
  • 湛江低价网站建设wordpress安装插件出现api
  • phpcms 多语言网站石柱网站制作
  • 网站开发编写籍贯代码wordpress怎么二次开
  • 网站的内容管理怎样建移动网站
  • 网站开发的论文题目黑龙江建设网官方
  • 做二维码推送网站wordpress登录原理
  • 大连营销型网站建设怎么对自己的网页进行修改
  • 重庆家政公司网站建设营销网站有四大要素构成
  • 平阴县建设工程网站做网站需要哪些成本
  • 如何挖掘和布局网站关键词网站建设续费合同
  • 做移动网站点击软件网站 需求
  • 网站开发前期方案静态网站如何建设
  • 国外html5网站企业app商城开发网站建设
  • 招聘门户网站有哪些wordpress固定链接设置
  • 电子商务网站建设题wordpress搭建电子商城
  • 公司网站想维护服务器一线城市做网站工资有多少钱
  • 付费主题怎么永久使用搜索引擎优化特点
  • 章丘网站建设哪家好帝国做网站
  • 网文网站网站建设兼职平台
  • 做印刷网站公司沈阳网站建设开发设计公司
  • 计算机网络技术网站建设方向it外包公司可以进吗
  • 微网站如何做推广申请域名做网站