Глобальная и локальная статическая переменная для переменных среды оболочки - PullRequest
1 голос
/ 11 апреля 2011

Я реализую простую оболочку, и я хочу иметь возможность устанавливать переменные среды через оболочку.Используя простой синтаксис, такой как set var = hello

У меня есть такая структура для представления одной переменной env:

typedef struct {
    char *name;
    char *value;
}

Я думаю о создании динамического массива вышеупомянутой структуры длядержать все переменные среды.Проблема в том, что я не уверен, как правильно это реализовать.

Прямо сейчас я не уверен, должен ли я сделать массив статическим внутри функции или глобальной переменной.Какой из них будет лучше?а почему?

1 Ответ

1 голос
/ 11 апреля 2011

Это полностью зависит от того, откуда переменные должны быть доступны. Если они нужны только в одной функции, то логическая локальная переменная имеет смысл. Если они нужны «для всего файла», тогда глобальный файл (который все еще статичен) имеет смысл. В противном случае, глобальный.

Другим вариантом, более подходящим для будущего расширения, будет создание файлово-статической переменной с набором функций доступа для получения и установки комбинаций имя / значение и использование этого API везде. Это позволяет позже изменить механизм хранения на что-то более эффективное, если, скажем, вам вдруг понадобилось хранить множество пар имя / значение (скажем, в b-дереве вместо массива).

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