Я хочу визначити константу в C ++, яка буде видимою у кількох вихідних файлах. Я можу уявити наступні способи визначити це у файлі заголовка:
#define GLOBAL_CONST_VAR 0xFFint 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 не має конкретного типу (C ++ 0X додасть можливість визначити тип)
Тому в більшості випадків мені потрібно вибирати між (5) та (6). Мої запитання:
- Що ви віддаєте перевагу (5) чи (6)?
- Чому (5) - нормально, а (2) - ні?