C语言学习之模块化编程

我们在编写程序的时候,总不能将所有的程序放在一个源文件中,这样也不便于团队开发和维护。这就需要将程序有序的组织在不同的文件中,头文件中只是程序的接口部分,而在源文件中负责具体实现,如果其他源文件中有需要调用该源文件中的某个函数,只需要包含头文件即可。以欧几里德算法计算两个数的最大公约数为例:

gcd函数的实现在euclid.c中

/* The gcd() function */

int gcd(int a, int b)

{

    while (b) {

        int temp = b;

        b = a % b;

        a = temp;

    }

    return a;

}

对于扩展欧几里德算法ext_euclid()同样在euclid.c中实现

那么来看euclid.h头文件该怎么写

/* ensure include only once */

#ifndef __EUCLID_H__

#define __EUCLID_H__


/* global variables (decared in euclid.c) */

extern int x, y;


/* compute gcd */

int gcd(int a, int b);


/* compute g = gcd(a, b) and solve ax + by = g */

int ext_euclid(int a, int b);

#endif

前面的ifndef和define是头文件中常见的写法,是为了防止重复包含该头文件。

extern关键字表示引用的其它地方定义的变量,这两个变量假设定义在euclid.c中。

如果我们要使用这两个算法,只需要使用包含euclid.h头文件即可。

#include "euclid.h"

同时我们还可以访问euclid.c中定义的整型变量x和y。

posted @ 2012-05-01 16:20  移动应用开发  阅读(244)  评论(0编辑  收藏  举报