c语言的组织形式,C语言常用的代码组织形式--多文件

对于小型代码而言,可以将所有的文件写到一个源文件中。但是对于一个大的项目工程,代码量极大,如果把所有的源码都放在一个源文件,就会显得代码杂乱,不利于阅读,更不便于代码的修改和维护。这时候我们需要合理的组织代码,可以使用多个文件,把源码归类放到不同的文件中。

程序多文件一般分为两类:

1、头文件(.h):像我们常用的stdio.h,stdlib.h....这些都是C为我们提供的

2、源文件(.c):一般一个头文件,对应一个.c文件。

先说下自定义的头文件:

头文件中一般包括

(1)头文件区:包含源码所需的头文件,例如stdio.h,stdlib.h等。

(2)全局宏区:定义模块公用的宏(#define),例如缓冲区的大小。

(3)全局变量区:所有模块共用的变量(非static)。

(4)函数接口区:包含所有相关模块的函数接口。

源文件:

源文件就是头文件对应的那个.c文件,它一般包括函数的具体实现。

下面以一个操作链表的程序为例,具体说明多文件的用法及编译方法

首先定义一个头文件link.h

//start link.h

#include

#include //所有模块所需的头文件

struct node //节点结构体

{

int data;

struct node *next;

};

typedef struct node * Node; //为了简化代码,我们将节点指针变量用Node代替

extern Node head; //链表头,extern的作用是引用外部文件中的Node head

//链表的操作函数(接口)

extern int insert(int d);

extern int del(int d,Node *res);

extern void print();

extern void destory();

//end link.hlink.c 文件定义所有的操作链表的函数

//start link.c

#include "link.h" //包含自定义的link.h

Node head; //链表的头结点

int insert(int d)

{

Node p=NULL,q=NULL;

p = head;

if(p!=NULL)

{

while(p->next!=NULL)

{

p = p->next;

}//查找尾结点

}

q = (Node)malloc(sizeof(struct node));

if(q==NULL)

return -1;

q->next=NULL;

q->data = d;

if(p==NULL) //如果是空链表

{

head = q;

return 1;

}

p->next = q;

return 1; //插入成功返回1

}

int del(int d,Node *res)

{

Node p=NULL,q=NULL;

p = head;

if(p==NULL) //如果是空表返回-1

return -1;

if(p->data==d)

{

*res = p;

head = p->next;

return 1;

} else if(p->next==NULL)

return -1;

q = p;

p = p->next;

while(p!=NULL)

{

if(p->data!=d)

{

q = p;

p = p->next;

}else

{

q->next = p->next;

p->next = NULL;

*res = p;

return 1;

}

}

return -1;

}

void print()

{

Node p = head;

while(p!=NULL)

{

printf("%d\n",p->data);

p = p->next;

}

}

void destory()

{

Node p=NULL;

while(head!=NULL)

{

p = head->next;

free(head);

head = p;

}

head = NULL;

}

//end link.cmain.c 里面包含了整个程序的main函数,程序执行的入口

//start main.c

#include "link.h"

int main(void)

{

Node p;

int i;

for(i=1;i<8;i++)

insert(i);

print();

printf("destory......\n");

destory();

return 0;

}以上就是全部文件

多文件的编译方法:

gcc -o 生成的可执行文件 源文件1 源文件2...

如果要编译的文件较多可以使用通配符*

gcc -o 生成的可执行文件 *.c

给大家推荐一个Windows版的gcc,TDM-gcc,它的使用和linux系统上的gcc完全一样,使用的命令行模式

,非常好用,下载地址:

http://tdm-gcc.tdragon.net/download

对于本例,编译命令为:

gcc link.c main.c -o main

运行main

./main

输出结果为:

1

2

3

4

5

6

7

destory......

需要注意的是C++与C语言的多文件并不相同,c++头文件中一般放的是类的定义,格式如下

#ifndef _***_H_

#define _***_H_

//类的定义

#endifC++ .cpp 文件中一般放的是类的实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值