C++ 文件作用域中的静态变量

C++ 文件作用域中的静态变量,c++,C++,我在某个abc.cpp文件的文件范围中使用了一个静态变量“EnvVarIsSet”,如下所示 #include <env.h> static bool EnvVarIsSet = IsEnvironmentVariableSet(); .. .. 这是否意味着,在运行时,每当它在abc.cpp文件中遇到变量EnvVarIsSet,就会调用IsEnvironmentVariableSet()例程?或者,上述静态变量是否仅适用于常量(即静态绑定,例如const bool envaris

我在某个
abc.cpp
文件的文件范围中使用了一个静态变量
“EnvVarIsSet”
,如下所示

#include <env.h>
static bool EnvVarIsSet = IsEnvironmentVariableSet();
..
..
这是否意味着,在运行时,每当它在
abc.cpp
文件中遇到变量
EnvVarIsSet
,就会调用
IsEnvironmentVariableSet()
例程?或者,上述静态变量是否仅适用于常量(即静态绑定,例如
const bool envarisset=false
)?

语句

static bool EnvVarIsSet = IsEnvironmentVariableSet();

将在编译模块中执行一次。每次
EnvVarIsSet
的值都将相同。

此外,它将在调用
main()
之前的某个未指定时间执行。其他静态初始值设定项可能已运行,也可能尚未运行。@Nik在编译时,它如何知道IsEnvironmentVariableSet()将返回什么?这不是只有在运行时才可能吗?@c45207我尝试在属于两个不同库的两个不同cpp文件中使用static。其中一个在main()之前调用,另一个在我启动应用程序之后调用。不确定,可能与按需加载库有关。
static bool EnvVarIsSet = IsEnvironmentVariableSet();