Статическое const против const в глобальной переменной - PullRequest
0 голосов
/ 09 июня 2018

В Foo.h я определяю 1 глобальную переменную как

static const int g_var = 4;

Затем я включаю этот заголовочный файл во многие различные заголовочные файлы и файлы .cpp.Если я просто напишу

int g_var = 4;

, я получу ошибки «g_var Уже определен в», что понятно, поэтому мне пришлось добавить static, чтобы он был только один раз инициализирован.Но использование

const int g_var = 4; 

решает проблему «уже определено».Я читал, что это потому, что глобальные переменные const по умолчанию имеют внутреннюю связь.Значит, ключевое слово static здесь избыточно?

1 Ответ

0 голосов
/ 09 июня 2018

Статическое ключевое слово является спецификатором доступа.Если вы используете static внутри функции, это позволяет переменной существовать за пределами области действия функции и сохранять ее значение между вызовами различных функций.Если вы определяете статическую переменную или константу вне функции, ее область действия будет ограничена этим конкретным файлом.С постоянным ключевым словом static просто оптимизирует компиляцию.

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