C语言中 多个源文件之间函数如何调用问题

C语言中多个源文件之间函数如何调用问题主函数3.c#include<stdio.h>#include<malloc.h>structadd*wwe();structadd... C语言中 多个源文件之间函数如何调用问题
主函数3.c
#include<stdio.h>
#include<malloc.h>
struct add *wwe();
struct add
{
int xuehao;
};
main()
{
struct add *p1;
wwe();
}
被调函数332.c
#include <stdio.h>
#include<malloc.h>
struct add *wwe()
{
extern struct add *p1;
p1=(extern struct add *)malloc(sizeof(extern struct add));
}
为什么会出现这样的错误呢?
332.c
C:\Program Files\Microsoft Visual Studio\MyProjects\123\332.c(6) : error C2027: use of undefined type 'add'
C:\Program Files\Microsoft Visual Studio\MyProjects\123\332.c(3) : see declaration of 'add'
执行 cl.exe 时出错.
展开
 我来答
scc172fly
2011-10-22 · TA获得超过193个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:106万
展开全部
题目明显提示你没有定义“add”呀,要求你查看“add”哦!再个你程序还是有问题的吧,如果你把它放到不同的源文件中一起编译连接的话,还会出现重复定义的错误吧。改正如下:
#include<stdio.h>
#include<malloc.h>
struct add *wwe();
struct add
{
int xuehao;
};
main()
{
struct add *p1;
p1=wwe();
}
//被调函数332.c
#include <stdio.h>
#include<malloc.h>
struct add *wwe() //此处你是定义一个名为wwe的函数,没有参数,返回值类型是:struct add*
{
struct add *p1;
p1=(struct add *)malloc(sizeof(struct add)); /*此处“extern”可以不要吧,一般他是用来声明用的,*/
return p1; //此处要返回一个值,没有值是不可以的
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hbin85
2011-10-19 · 超过13用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:36.2万
展开全部
332.c 里面必须include 3.c文件。因为3.c里没有 struct add 结构体的定义,sizeof(extern struct add),里不用extern的。 3.c里面也要include 33.2文件。因为struct add *wwe();在332.c文件里面。
你可以用头文件的方式来声明。就不用include 点C文件了
追问
为什么还会出现这样的东西呢
332.obj : error LNK2005: _main already defined in 321.obj
Debug/3.exe : fatal error LNK1169: one or more multiply defined symbols found
执行 link.exe 时出错.
你可不可以帮我把它改一下呢
追答
新一个文件叫"common.h",里央写入下面内容
#ifndef __COMMON_H__
#define __COMMON_H__
struct add *wwe();
struct add
{
int xuehao;
};
#endif

把3.c里面的删掉,然后加入#include "common.h"
332.c也加入#include "common.h"
extern 是对变量的。删掉。
就应该没问题了,一个使用规则就是,在使用之间要先声明。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Simon527
2011-10-20
知道答主
回答量:41
采纳率:0%
帮助的人:26.6万
展开全部
先建立个头文件,以.h命名保存,要写明下面需要调用的函数,然后在主函数中才可以调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
菲儿花使
2011-10-19 · TA获得超过181个赞
知道答主
回答量:44
采纳率:100%
帮助的人:28.3万
展开全部
将struct add *wwe();放到 struct add下面试试吧~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式