c語言多檔案程式設計,即main檔案呼叫其他.c檔案的方法
阿新 • • 發佈:2018-12-22
c語言多檔案程式設計,即main檔案呼叫其他.c檔案的方法。
兩種方法的區別就是,gcc編譯時,是否加b.c檔案,不加的話,就在a.c檔案裡面,加#include "b.c"
至於extern 那一句,是否新增,編譯都是可以通過的,只是填加上去,大家都知道了,這個函式在其他地方定義了,這個地方只是呼叫。
方法1:
a.c
/*************************************************** ##filename : a.c ##author : GYZ ##e-mail :
[email protected] ##create time : 2018-11-13 15:15:25 ##last modified : 2018-11-14 14:05:44 ##description : NA ***************************************************/ #include "t.h" #include "b.c" extern void printB(void); int main(int argc,char *argv[]) { printf("%s\n",__FILE__); printB(); return 0; }
b.c
/*************************************************** ##filename : b.c ##author : GYZ ##e-mail : [email protected] ##create time : 2018-11-13 15:19:27 ##last modified : 2018-11-14 13:59:39 ##description : NA ***************************************************/ #include "t.h" void printB(void) { printf("%s\n",__func__); }
t.h
#ifndef __T_H__
#define __T_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printB(void);
#endif
編譯方法:##gcc a.c
方法2:
a.c
/***************************************************
##filename : a.c
##author : GYZ
##e-mail : [email protected]
##create time : 2018-11-13 15:15:25
##last modified : 2018-11-14 14:05:44
##description : NA
***************************************************/
#include "t.h"
//#include "b.c"
extern void printB(void);
int main(int argc,char *argv[])
{
printf("%s\n",__FILE__);
printB();
return 0;
}
b.c
/***************************************************
##filename : b.c
##author : GYZ
##e-mail : [email protected]
##create time : 2018-11-13 15:19:27
##last modified : 2018-11-14 13:59:39
##description : NA
***************************************************/
#include "t.h"
void printB(void)
{
printf("%s\n",__func__);
}
t.h
#ifndef __T_H__
#define __T_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printB(void);
#endif
編譯方法:##gcc a.c b.c
-------------------------------------------
如果b.c檔案裡呼叫c.c檔案裡的函式,方法也是一樣的。
a.c
/***************************************************
##filename : a.c
##author : GYZ
##e-mail : [email protected]
##create time : 2018-11-13 15:15:25
##last modified : 2018-11-14 14:27:33
##description : NA
***************************************************/
#include "t.h"
#include "b.c"
extern void printB(void);
int main(int argc,char *argv[])
{
printf("%s\n",__FILE__);
printB();
return 0;
}
b.c
/***************************************************
##filename : b.c
##author : GYZ
##e-mail : [email protected]
##create time : 2018-11-13 15:19:27
##last modified : 2018-11-14 14:29:17
##description : NA
***************************************************/
#include "t.h"
#include "c.c"
extern void printC();
void printB(void)
{
printf("%s\n",__func__);
printC();
}
c.c
/***************************************************
##filename : c.c
##author : GYZ
##e-mail : [email protected]
##create time : 2018-11-14 14:25:18
##last modified : 2018-11-14 14:26:33
##description : NA
***************************************************/
#include "t.h"
void printC(void)
{
printf("%s\n",__func__);
}
t.h
#ifndef __T_H__
#define __T_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printB(void);
#endif
編譯方式,##gcc a.c
--------------------------------------------
關於#ifndef...#define...#endif,就是為了防止這些定義的“東西”大家重複呼叫,第一個檔案使用的時候#include一次就可以了,否則會報錯。