在非成员函数中声明全局变量

Coo*_*kie 1 c++

我可以在非成员函数中声明一个全局变量吗?

或者换句话说,非成员函数的静态等价物?

而且我希望变量不是常量 - 例如可修改......

Mik*_*our 6

您可以在函数内声明一个全局变量:

void f() {
    extern int i;
}
Run Code Online (Sandbox Code Playgroud)

但是如果你想使用它,你还需要在周围的命名空间中定义它.

作为全球性的,定义不必是相同的翻译单元,而是受一个定义规则的约束.

如果,如注释中所示,您实际上需要一个持久的局部变量,在第一次调用该函数时初始化,那么这就是本地静态变量的行为:

void f() {
    static int i = whatever();  // initialised the first time
    i = something_else();       // the new value is preserved for next time
}
Run Code Online (Sandbox Code Playgroud)