Статическая переменная в области видимости файла

0

Я использовал статическую переменную "EnvVarIsSet" в области файлов в определенном файле abc.cpp следующим образом

#include <env.h>
static bool EnvVarIsSet = IsEnvironmentVariableSet();
..
..

Подпрограмма IsEnvironmentVariableSet() является процедурой extern и объявляется и определяется в других файлах (env.h & env.cpp). Где-то в файле abc.cpp, в некоторой рутине я использовал эту переменную (а также в других местах в этом файле)

if( EnvVarIsSet )
{
   //do something
}

Означает ли это, во время выполнения, когда он сталкивается с переменной EnvVarIsSet в abc.cpp файл, IsEnvironmentVariableSet() подпрограмма будет называться? Или статическая переменная, как выше, будет работать только с константами (например, статическая привязка, например, const bool EnvVarIsSet = false)?

Теги:

1 ответ

1

Заявление

static bool EnvVarIsSet = IsEnvironmentVariableSet();

будет выполняться один раз в вашем модуле компиляции. И каждый раз значение EnvVarIsSet будет одинаковым.

  • 2
    Кроме того, он будет выполнен в неуказанное время до вызова main() . Возможно, запущен другой статический инициализатор или еще не запущен.
  • 0
    @Nik Во время компиляции, как он узнает, что IsEnvironmentVariableSet () вернет? Разве это не было бы возможно только во время выполнения?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню