Я хочу, чтобы константа в С++ была видимой в нескольких исходных файлах. Я могу представить следующие способы определения его в файле заголовка:
-
#define GLOBAL_CONST_VAR 0xFF
-
int GLOBAL_CONST_VAR = 0xFF;
- Некоторые функции сохраняют значение (например,
int get_GLOBAL_CONST_VAR()
) -
enum { GLOBAL_CONST_VAR = 0xFF; }
-
const int GLOBAL_CONST_VAR = 0xFF;
-
extern const int GLOBAL_CONST_VAR;
и в одном исходном файлеconst int GLOBAL_CONST_VAR = 0xFF;
Вариант (1) - это определенно не тот вариант, который вы хотели бы использовать
Опция (2) - определение экземпляра переменной в каждом объектном файле с использованием файла заголовка
Вариант (3) - В большинстве случаев ИМО убивает
Опция (4) - во многих случаях может быть не очень хорошо, поскольку enum не имеет конкретного типа (С++ 0X добавит возможность определить тип)
Поэтому в большинстве случаев мне нужно выбирать между (5) и (6). Мои вопросы:
- Что вы предпочитаете (5) или (6)?
- Почему (5) нормально, а (2) - нет?