函数调用了,是你写的有问题。
成都创新互联服务项目包括西陵网站建设、西陵网站制作、西陵网页制作以及西陵网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,西陵网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到西陵省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
比如你第一次调用 swap(n1,n2),这个时候程序把n1,n2的值传给p1,p2,然后p1,p2的值交换了,但是你需要的n1,n2没有变化。
你改成void swap(int n1,int n2),引用就可以了
1、外部函数extern时声明这个函数为外部函数,本文件不做定义,只调用,编译不会出错,但不能运行(没有函数实体)。如果想有运行结果就必须将函数实体包含进来,所以文件包含和extern是配合使用的。文件包含只需要包含.h就是实体的头文件,但有些软件貌似不能识别头文件和c的关系,所以就只能包含.c文件。
2、也就是说外部函数extern只是个声明,他告诉编译器我用到了一个外部函数,但如果该文件没有将函数实体包含进来,编译器是找不到的,依然是不能运行的,所以extern只是个声明,并没有做任何事,只是这样是没用的。include是包含一个文件,就是类似于该文件复制到此处(只是说类似,其实是个查找路径,让编译器去该路径查找函数)。
多文件编译时,文件内的函数不加static声明时默认是带外部链接的,即在其他文件中也可以使用本文件的函数,编译不会报错,你说的调用有问题,分析可能原因:
1. 带参数的函数,参数传入可能存在问题
2. 无参函数,那有可能是你的程序逻辑存在问题,建议自己检查程序流程,如不能解决,建议贴代码,共同研究。
你必须用include包括file1和file2否则虽然你用extern告诉编译器有这两个函数,能通过编译,但是实际上编译器并不知道这两个文件在哪,所以会出错
你用VS2008吧,用它编译的话,你这个能成功!
我问了一位高手,
讲的是:“VC编译器在编译时不默认连接math.h函数”
它不属于C运行库,所以没有默认链接
后来用了VS2008,发现成功了。