| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 550 人关注过本帖
标题:C语言求助,请高手给点解释
只看楼主 加入收藏
yigengxue
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-28
结帖率:100%
收藏
 问题点数:0 回复次数:9 
C语言求助,请高手给点解释
//file1.c源程序文件清单
/* 求两个整数中最小数*/
int min1(int a, int b )
{    if(a>b) return(b);
    else
        return(a);
}

//file2.c源程序文件清单
/* 求三个整数中最小数*/
int min2(int a, int b, int c)
{    int z,m;
    z=min1(a,b);
    m=min1(z,c);
    return (m);
}

/*file3*/
#include "file1.c"
#include "file2.c"
main()
{    int x1,x2,x3,min;
    scanf("%d,%d,%d",&x1,&x2,&x3);
    min=min2(x1,x2,x3);
    printf("min=%d\n",min);
}
以上程序的功能是将3个不同C 文件用文件包含命令来处理,输出3个数字中的最小值。在vs2008中,编译,运行,却出现了错误,具体提示如下:
1>file3.obj : error LNK2005: _min1 已经在 file1.obj 中定义
1>file3.obj : error LNK2005: _min2 已经在 file2.obj 中定义
1>D:\VS2008\lian xi jia\xin\Debug\xin.exe : fatal error LNK1169: 找到一个或多个多重定义的符号

恳求高手给点解释,不胜感激!
搜索更多相关主题的帖子: include return C语言 源程序 
2013-06-27 11:19
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:0 
第一次看到这样使用的,网上找了找,没有找到关于出现重复定义的详细解释和解决办法,静等大神...
2013-06-27 11:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
#include "file1.c"
#include "file2.c"
都是那些SB老师教你的
2013-06-27 12:09
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:0 
回复 3楼 rjsp
你这骂得不对哦!!!!这种方式 原理是没有错的!!!只是不推荐这种使用方式而已
2013-06-27 14:11
yigengxue
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-28
收藏
得分:0 
回复 3楼 rjsp
即使把"" 改成<> 运行file3 也有错误的,现实的是:
1>file3.c
1>d:\vs2008\lian xi jia\lianbiao\lianbiao\file3.c(1) : fatal error C1083: 无法打开包括文件:“file1.c”: No such file or directory

这是什么原因啊,请大侠解释一下!谢谢
2013-06-27 23:04
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:0 
回复 5楼 yigengxue
LZ还没搞清楚 #include<>和#include"" 的区别吧,前一个是系统库文件,后一个是自定义库文件。那另外问一个问题 你使用#include "xx.c"这种使用方式 是因为不懂才使用的  还是故意这样使用的???如果是因为不懂的话 那就使用#include "xx.h"吧,把函数定义和声明分开这样就没什么问题了!!!!

[ 本帖最后由 wyw19880809 于 2013-6-28 09:21 编辑 ]
2013-06-28 09:19
神经不正常
Rank: 2
等 级:论坛游民
帖 子:16
专家分:52
注 册:2013-5-23
收藏
得分:0 
无法解决。
如果你删除"file1.c""file2.c"文件。那就是,无法解析的外部符号。

如果包含着两个文件,就是重复定义。
2013-06-29 16:12
abc594986308
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
收藏
得分:0 
//file1.c源程序文件清单
/* 求两个整数中最小数*/
int min1(int a, int b )
{    if(a>b) return(b);
    else
        return(a);
}

//file2.c源程序文件清单
/* 求三个整数中最小数*/
int min2(int a, int b, int c)
{    int z,m;
    z=min1(a,b);
    m=min1(z,c);
    return (m);
}

/*file3*/
#include <stdio.h>

main()
{    int x1,x2,x3,min;
    scanf("%d,%d,%d",&x1,&x2,&x3);
    min=min2(x1,x2,x3);
    printf("min=%d\n",min);
}
直接改成这样你不爽?
2013-06-29 21:38
liu122430950
Rank: 4
等 级:业余侠客
威 望:1
帖 子:45
专家分:211
注 册:2010-5-30
收藏
得分:0 
回复 楼主 yigengxue
建议采用六楼的
在三个文件及三个文件以上的函数1调用函数2,即本例。本人也是不了解,望大神赐教!!拜谢!!
2013-06-30 23:41
yigengxue
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-28
收藏
得分:0 
谢谢各位指点,六楼的建议也很好!
2013-07-02 00:21
快速回复:C语言求助,请高手给点解释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026231 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved