组织ANSI C项目的首选方法?

时间:2011-08-02 13:54:49

标签: c

我是一名新的C程序员,所以这是一个非常基本的问题。在项目中组织ANSI C文件的首选方法是什么?我有大约12个.c文件,每个文件都有自己的.h文件来保存本地声明,枚举等。但是我也有很多全局参数,例如......

float LandingAltitudeList[2][17] = {
    // P100
    {12,-1000,0,1000,2000,3000,4000,5000,6000,7000,8000,9000,10000},
    // P300
   {16,-1000,0,1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,1000,12000,13000,14000}  };

enum PType {P100,P300};
enum Boolean {No=0,Yes=1,Off=0,On=1};

此外,我有许多全局变量,例如......

float Alt_min = LandingAltitudeList[PhenomType][1];
int Max = LandingAltitudeList[PhenomType][0];
float Alt_max = LandingAltitudeList[PhenomType][Max];

我只计算一次,但在整个项目中使用。这些必须是一个功能才能发挥作用。

我应该如何组织文件来处理这些全局参数?非常感谢。

1 个答案:

答案 0 :(得分:1)

一种选择是在头文件中声明这些变量。使变量本身不可见并声明访问函数以使它们接口可能更合适。请考虑以下示例:

/* in access.h */
int access_secret();
...

/* in access.c */

/* the private variable */
static int very_secret;

void calculate_secret() {
    very_secret = 42;
}

void access_secret() {
    return very_secret;
}
当模块初始化时,

calculate_secret只调用一次,而当需要变量值时,access_secret调用{{1}}。通过为数组添加数组索引参数,可以很容易地增强系统。