首先要建立一個(gè)頭文件,以.h保存
成都創(chuàng)新互聯(lián)公司制作網(wǎng)站網(wǎng)頁(yè)找三站合一網(wǎng)站制作公司,專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)站建設(shè)、做網(wǎng)站,網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開(kāi)發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為近千家服務(wù),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)將一如既往的為我們的客戶(hù)提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣服務(wù)!
這樣
#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);
當(dāng)然要有個(gè)主函數(shù).
#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);
}
然后 這個(gè)頭文件有兩個(gè)函數(shù).這兩個(gè)函數(shù),以.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)
{
....
}
主函數(shù)來(lái)負(fù)責(zé)調(diào)用,別的源文件.但是,要有一定要有個(gè)頭文件.
就相當(dāng)說(shuō), 站長(zhǎng)(主函數(shù))要控制各個(gè)列車(chē)(多個(gè)源文件).需要通過(guò)調(diào)度臺(tái)(頭文件)
這是我的理解,我也是剛學(xué).希望大家指正
編譯的時(shí)候,要分別編譯,先要把非主函數(shù)的源文件便宜成obj格式.
我的編譯器是:cl /c 源文件名.c (cygwin中是 gcc -c 源文件名.c)
最后和主函數(shù)結(jié)合.
cl main.c 源文件.obj
cygwin中是 gcc -o main main.c 源文件.o
不知道 我說(shuō)的夠不夠明白
在調(diào)用函數(shù)之前,編譯器需要知道調(diào)用的規(guī)則,即調(diào)用的參數(shù)、參數(shù)個(gè)數(shù)、返回值,以一個(gè)文件為單位。
比如在first.c中需要調(diào)用play1那么編譯器就需要買(mǎi)哦時(shí)play1的調(diào)用規(guī)則,所以一般用int play1();這樣的語(yǔ)句說(shuō)明一下,用extern也可以,由于main中不存在調(diào)用play2的語(yǔ)句,就不需要事先聲明了;
在second.c中由于play1之前編譯器已經(jīng)編譯過(guò)了play2,所以知道了play2的調(diào)用規(guī)則,就可以省略聲明語(yǔ)句。
象first.c中調(diào)用外部程序比較多時(shí),就將這些聲明語(yǔ)句另存成一個(gè).h文件,然后用include包含這個(gè).h文件就可正常調(diào)用了,例如#includestdio.h
題目明顯提示你沒(méi)有定義“add”呀,要求你查看“add”哦!再個(gè)你程序還是有問(wèn)題的吧,如果你把它放到不同的源文件中一起編譯連接的話(huà),還會(huì)出現(xiàn)重復(fù)定義的錯(cuò)誤吧。改正如下:
#includestdio.h
#includemalloc.h
struct add *wwe();
struct add
{
int xuehao;
};
main()
{
struct add *p1;
p1=wwe();
}
//被調(diào)函數(shù)332.c
#include stdio.h
#includemalloc.h
struct add *wwe() //此處你是定義一個(gè)名為wwe的函數(shù),沒(méi)有參數(shù),返回值類(lèi)型是:struct add*
{
struct add *p1;
p1=(struct add *)malloc(sizeof(struct add)); /*此處“extern”可以不要吧,一般他是用來(lái)聲明用的,*/
return p1; //此處要返回一個(gè)值,沒(méi)有值是不可以的
}
如果該函數(shù)在主文件外的C語(yǔ)言頭文件中,那么用
#include "C語(yǔ)言頭文件名" 引用,然后就可以使用了(包含在同一項(xiàng)目下編譯)
如果沒(méi)有,在主文件使用
extern 改函數(shù)的定義;來(lái)聲明一下就可以使用了
例如
extern int foo(int bar);
int main(int argc,char **argv)
{
foo(1);
...
return 0;
}
當(dāng)前標(biāo)題:C語(yǔ)言實(shí)現(xiàn)多文件調(diào)用函數(shù) c語(yǔ)言如何實(shí)現(xiàn)多文件編程
分享鏈接:http://muchs.cn/article0/doeocio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、品牌網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化、企業(yè)建站、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容