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        : 1746902011@qq.com                 
##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        : 1746902011@qq.com                 
##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        : 1746902011@qq.com                 
##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        : 1746902011@qq.com                 
##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        : 1746902011@qq.com                 
##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        : 1746902011@qq.com                 
##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        : 1746902011@qq.com                 
##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一次就可以了,否则会报错。

 

已标记关键词 清除标记
相关推荐