在特定文件中无法访问外部变量

Make extern variable can't be accessed in specific files

所以我有:

foo.h

#ifndef FOO_H
#define FOO_H

extern int bar;

void change_bar_value(const int& value);

#endif

foo.cpp

#include "foo.h"

int bar = 10;

void change_bar_value(const int& value)
{
    bar = value;
}

main.cpp

#include "foo.h"

int main()
{
    bar = 20;
    change_bar_value(20);
}

所以我希望你不能在 main.cpp 中直接更改 bar,但你可以调用一个函数来更改 bar 的值。那我该怎么做呢?

“不要成功 extern”是显而易见的答案,也是通常更可取的解决方案。

如果您迫切希望某些东西全局可读但不可写,请使用 const 引用为其取别名。
(并且不要通过 const 引用传递基元 - 这是毫无意义的悲观化。)

foo.h:

extern const int& bar;
void change_bar_value(int value);

foo.cpp:

static int local_bar;
const int& bar = local_bar;

void change_bar_value(int value)
{
    local_bar = value;
}