Предпочитаемый подход к организации проекта ANSI C? - PullRequest
1 голос
/ 02 августа 2011

Я новый программист на 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];

, который я вычисляю только один раз, но использую на протяжении всего проекта. Они должны быть в функции, чтобы работать.

Как мне организовать свои файлы для обработки этих глобальных параметров? Большое спасибо.

1 Ответ

1 голос
/ 02 августа 2011

Один из вариантов - объявить эти переменные в заголовочном файле.Вероятно, было бы более уместным сделать сами переменные невидимыми и объявить функции доступа для их взаимодействия.Рассмотрим следующий пример:

/* 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, когда необходимо значение переменной.Систему легко улучшить, добавив параметр индекса массива для массивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...