| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 975 人关注过本帖
标题:关于函数的模块化
只看楼主 加入收藏
may大象
Rank: 2
等 级:论坛游民
帖 子:55
专家分:38
注 册:2013-5-30
结帖率:87.5%
收藏
已结贴  问题点数:2 回复次数:19 
关于函数的模块化
file1.c:
#include<stdio.h>

extern void enter_string(char str[]);
extern void delete_string(char str[],char ch);
extern void print_string(char str[]);
void main(void)
{
    char c;
    char str[80];
    enter_string(str);
    scanf("%c",&c);
    delete_string(str,c);
    print_string(str);
}


file2.c:
#include<stdio.h>
void enter_string(char str[80])
{
    gets(str);
}


file3.c:
#include<stdio.h>
void enter_string(char str[],char ch)
{  
    int i,j;
    for(i=0,j=0;str[i]!='\0';i++)
        if(str[i]!=ch)
            str[j++]=str[i];
    str[j]='\0';
}



file4.c:
#include<stdio.h>
void print_string(char str[])
{
    printf("%s\n",str);
}


这几个c文件都能独立的编译,但是为什么不能连一起呢?就是怎么模块化?
我只是把分别新建它们,然后放在同一个目录下。组建file1.c的时候出现
file1.obj : error LNK2001: unresolved external symbol _print_string
file1.obj : error LNK2001: unresolved external symbol _delete_string
file1.obj : error LNK2001: unresolved external symbol _enter_string
Debug/file1.exe : fatal error LNK1120: 3 unresolved externals
执行 link.exe 时出错.
2013-08-05 12:22
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
incude
file2.c?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-05 12:42
may大象
Rank: 2
等 级:论坛游民
帖 子:55
专家分:38
注 册:2013-5-30
收藏
得分:0 
回复 2楼 peach5460
什么?没明白

                             凡成大事者,各有各的方法论。
2013-08-05 12:47
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
我想错了,我再看看

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-05 13:17
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
可以用include的  
程序代码:
#include <stdio.h>
#include "c2.cpp"
int main()
{
    printf("%d\n",myadd(10,20));
    return 0;
}

c2.cpp
int myadd(int a,int b)
{
    return a+b;
}

vs2010测试成功

DO IT YOURSELF !
2013-08-05 13:50
XiaoXiao_Ren
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
威 望:1
帖 子:80
专家分:198
注 册:2013-7-17
收藏
得分:0 
回复 楼主 may大象
请教一下:怎样编译成功的file2.c的,我用的Linux,编译不成功。
          谢谢了!

我知道了  gcc -o file2.o -c file2.c

如果是Linux系统的话,可以看看下面这个链接,
我刚刚试了,可以成功,但是你的file3.c中的函数名应该改为delete_string
http://os.

[ 本帖最后由 XiaoXiao_Ren 于 2013-8-5 18:16 编辑 ]

否极泰来
2013-08-05 17:51
guhemeng
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:100
专家分:165
注 册:2013-7-27
收藏
得分:0 
5楼 、 6楼  都可行,但是5楼是违规的不建议使用, 可用6楼的方法,或者建立 makefile, 至于如何建立请度娘
2013-08-05 18:25
may大象
Rank: 2
等 级:论坛游民
帖 子:55
专家分:38
注 册:2013-5-30
收藏
得分:0 
回复 6楼 XiaoXiao_Ren
哦哦,那里打错了,是delete_string

                             凡成大事者,各有各的方法论。
2013-08-05 20:47
netaa001
Rank: 2
等 级:论坛游民
帖 子:73
专家分:69
注 册:2013-8-5
收藏
得分:0 
寻找志同道合的一起学习C语言,愿意的进群:330809827。
2013-08-05 21:31
人_神
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:103
注 册:2013-8-1
收藏
得分:0 
#include"stdio.h"
2013-08-05 21:50
快速回复:关于函数的模块化
数据加载中...
 
   



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

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