1. 程式人生 > >c語言多檔案程式設計,即main檔案呼叫其他.c檔案的方法

c語言多檔案程式設計,即main檔案呼叫其他.c檔案的方法

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一次就可以了,否則會報錯。