C++ 中 R 的 <<- 的等价物:局部变量的 extern

Equivalent of R's <<- in C++: extern for local variables

我已经在 C++ 中为一个函数定义了一个本地变量,但希望它可以被包含在单独文件中的另一个 C++ 函数访问。

在 R 中,<<- 允许通过复制全局访问局部变量。

C++ 中是否有等同于 <<- 的等效项,允许我通过另一个 C++ 文件中的 extern 声明调用局部变量(否则未全局定义)?

下面的代码可以正常运行吗?

例如访问y:

### File 1.cpp ###
void func() {
    const std::vector x
    int y = x.size()
}

### File 2.cpp ###
extern int y 
y // Call y somewhere else within program

在 C++ 中,函数不能将声明泄漏到封闭范围中。您可以做的最接近的事情是:

void f() {
    extern int x;
}

这导致 x 引用在程序其他地方定义的全局变量。另一个翻译单元中的另一个函数,包含相同的声明,然后可以引用相同的变量。但是,声明 都没有定义 变量,您必须在全局范围内提供一个定义才能使程序 link.

如果是你需要的全局变量,你应该定义一个全局变量。然而,可变的全局状态通常会使程序更难推理,因此通常最好尽可能避免使用它。通常,您会希望构建您的程序,以便两个函数尽可能通过函数调用机制相互通信(在函数参数中传递信息),或者最坏的情况是,共享封装在 class 中的可变状态,这样它就不会泄漏到 class.

之外