在一個(gè)文件里面的函數(shù),如果要調(diào)用其他文件里的函數(shù)的話,你肯定要先include一下函數(shù)所在的文件,比如在a.c里面想調(diào)用b.c里面的函數(shù),你在a.c里面要加上#include b.c才行。
專注于為中小企業(yè)提供做網(wǎng)站、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)長(zhǎng)陽(yáng)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
題目明顯提示你沒(méi)有定義“add”呀,要求你查看“add”哦!再個(gè)你程序還是有問(wèn)題的吧,如果你把它放到不同的源文件中一起編譯連接的話,還會(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ù),返回值類型是:struct add*
{
struct add *p1;
p1=(struct add *)malloc(sizeof(struct add)); /*此處“extern”可以不要吧,一般他是用來(lái)聲明用的,*/
return p1; //此處要返回一個(gè)值,沒(méi)有值是不可以的
}
首先要建立一個(gè)頭文件,以.h保存
這樣
#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è)列車(多個(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ō)的夠不夠明白
file1.c
頭文件為file1.h
file2.c
頭文件為file2.h
比如file2.c要調(diào)用file1.c里的一個(gè)函數(shù)
首先f(wàn)ile2.c里要包含file1.h頭文件(file1.h里有file1.c的函數(shù)申明)
然后file2.c文件里要有file1.c里的外部函數(shù)申明,用extern關(guān)鍵字申明
然后就可以直接file2.c里面調(diào)用file1.c里的函數(shù)了
我在單片機(jī)里是這樣弄的完全沒(méi)問(wèn)題,51,avr,pic都可以
一種方式 是 通過(guò) 環(huán)境變量 INCLUDE, PATH, LIB 里的設(shè)置,編譯器 會(huì)到 那里去找。
用雙引號(hào)括起的方法 寫(xiě) 包含 文件名字 可以 帶 詳細(xì)的 路徑。
例如:
#include "..\\DataBase\\include\\db.h"
例如:
#include "C:\\users\\public\\C\\LIB\\dbb.c"
路徑寫(xiě)法 要符合自己用的操作系統(tǒng).
新建 project
然后添加 文件
main 所在程序中 添加函數(shù)聲明 就可以調(diào)用了
main.c
#include stdio.h
extern int add(int a, int b);
int main(void)
{
int a = 1, b = 2;
printf("%d",add(a,b));
}
2.c
int add(int a, int b)
{
return a + b;
}