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

标签 c

我是一名新的 C 程序员,所以这是一个非常基本的问题。在项目中组织 ANSI C 文件的首选方法是什么?我有大约十几个 .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];

我只计算一次,但会在整个项目中使用。这些需要在一个函数中才能工作。

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

最佳答案

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

/* 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 则在需要变量值时调用。通过为数组添加数组索引参数,可以很容易地增强系统。

关于c - 组织 ANSI C 项目的首选方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6913186/

相关文章:

c - c 中的文本换行程序无法正常工作

c - 使用管道进行 fork 过程时程序崩溃

c - 发送UDP广播后收到响应

c++ - 如何在c中实现一个类

c++ - 最佳实践 : how to check for NULL return value in C/C++

c++ - 在 C++ 程序中从 C 库调用函数时有什么陷阱吗?

c - 非常奇怪的数组声明问题 - C

C:获取整数的位

c - 为什么我的命令窗口在传递标签时显示总线错误?

c - 散列密码并使用 C 中的签名进行检查