首先要建立一个头文件,以.h保存
成都创新互联公司制作网站网页找三站合一网站制作公司,专注于网页设计,成都网站建设、做网站,网站设计,企业网站搭建,网站开发,建网站业务,680元做网站,已为近千家服务,成都创新互联公司网站建设将一如既往的为我们的客户提供最优质的网站建设、网络营销推广服务!
这样
#include stdio.h
typedef struct {
char name[100][60];
char number[100][8];
int mon[100],day[100];
char sex[100];
double height[100];
}inf;
int input(inf *x ,int i);
int output(inf *y ,int h);
当然要有个主函数.
#include "inout.h"
int main(void)
{
int n;
inf id;
do{
printf("*********n");
scanf("%d",n);
}while(n100);
input(id,n);
output(id,n);
return(0);
}
然后 这个头文件有两个函数.这两个函数,以.c的格式保存.
#include stdio.h
#include "inout.h"
int input(inf *x,int i)
{
........
}
#include stdio.h
#include "inout.h"
int output(inf *y ,int h)
{
....
}
主函数来负责调用,别的源文件.但是,要有一定要有个头文件.
就相当说, 站长(主函数)要控制各个列车(多个源文件).需要通过调度台(头文件)
这是我的理解,我也是刚学.希望大家指正
编译的时候,要分别编译,先要把非主函数的源文件便宜成obj格式.
我的编译器是:cl /c 源文件名.c (cygwin中是 gcc -c 源文件名.c)
最后和主函数结合.
cl main.c 源文件.obj
cygwin中是 gcc -o main main.c 源文件.o
不知道 我说的够不够明白
在调用函数之前,编译器需要知道调用的规则,即调用的参数、参数个数、返回值,以一个文件为单位。
比如在first.c中需要调用play1那么编译器就需要买哦时play1的调用规则,所以一般用int play1();这样的语句说明一下,用extern也可以,由于main中不存在调用play2的语句,就不需要事先声明了;
在second.c中由于play1之前编译器已经编译过了play2,所以知道了play2的调用规则,就可以省略声明语句。
象first.c中调用外部程序比较多时,就将这些声明语句另存成一个.h文件,然后用include包含这个.h文件就可正常调用了,例如#includestdio.h
题目明显提示你没有定义“add”呀,要求你查看“add”哦!再个你程序还是有问题的吧,如果你把它放到不同的源文件中一起编译连接的话,还会出现重复定义的错误吧。改正如下:
#includestdio.h
#includemalloc.h
struct add *wwe();
struct add
{
int xuehao;
};
main()
{
struct add *p1;
p1=wwe();
}
//被调函数332.c
#include stdio.h
#includemalloc.h
struct add *wwe() //此处你是定义一个名为wwe的函数,没有参数,返回值类型是:struct add*
{
struct add *p1;
p1=(struct add *)malloc(sizeof(struct add)); /*此处“extern”可以不要吧,一般他是用来声明用的,*/
return p1; //此处要返回一个值,没有值是不可以的
}
如果该函数在主文件外的C语言头文件中,那么用
#include "C语言头文件名" 引用,然后就可以使用了(包含在同一项目下编译)
如果没有,在主文件使用
extern 改函数的定义;来声明一下就可以使用了
例如
extern int foo(int bar);
int main(int argc,char **argv)
{
foo(1);
...
return 0;
}