Я использовал глобальные переменные без каких-либо заметных проблем, но хотел бы знать, есть ли потенциальные проблемы или недостатки при использовании глобальных переменных.Использование глобальных переменных в приложении C++
В первом сценарии, включаю константные глобал в файл globals.h, я затем включить заголовок в различные файлы реализация, где я нужен доступ к любому из глобал:
globals.h
const int MAX_URL_LEN = 100;
const int MAX_EMAIL_LEN = 50;
…
Во втором сценарий, я объявляю и инициализирую глобалы в файле реализации, когда приложение выполняется. Эти глобальные переменные больше не изменяются. Когда мне нужно доступ к этим глобал из другого файла реализации, я использую Экстерн ключевое слово:
main.cpp
char application_path[128];
char data_path[128];
// assign data to globals
strcpy(application_path, get_dll_path().c_str());
…
do_something.cpp
extern char application _path[]; // global is now accessible in do_something.cpp
Что касается первого сценария выше, я рассмотрел удаление все различные «включает globals.h» и использование EXTERN где нужен доступ к этим глобальным переменным, но не сделал этого, так как просто включение globals.h настолько удобно.
Я обеспокоен тем, что у меня будут разные версии переменных для каждого файла реализации, который включает globals.h.
Должен ли я использовать extern вместо того, чтобы включать globals.h везде нужен доступ?
Просьба сообщить, и спасибо.
совет: минусы tants прекрасны, но не используют глобальные переменные. При необходимости передавайте данные или объекты. – crashmstr
Вы можете взглянуть на это относительно глобальных переменных в целом: http://stackoverflow.com/questions/484635/are-global-variables-bad – NathanOliver
Вы можете поместить 'extern something;' в заголовок, а затем включите заголовок, который должен писать вручную. Кроме того, вы не должны использовать имена, начинающиеся с '_' в глобальном пространстве имен (поскольку стандарт говорит об этом). – HolyBlackCat