Я использовал статическую переменную "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
)?
Заявление
static bool EnvVarIsSet = IsEnvironmentVariableSet();
будет выполняться один раз в вашем модуле компиляции. И каждый раз значение EnvVarIsSet
будет одинаковым.
main()
. Возможно, запущен другой статический инициализатор или еще не запущен.