为什么这不起作用
extern int externed_variable;
int variable = externed_variable;
尽管如此
extern int externed_variable;
int *variable_ptr = &externed_variable;
我从前者得到的编译器错误是“表达式必须具有常量值”。我正在使用 MSVC。
最佳答案
"expression must have a constant value"
正如错误所示,当您初始化变量时,它应该是常量。
在这种情况下,
extern int externed_variable;
int variable = externed_variable;
您正在使用“变量”进行初始化,并且变量在运行时获取值。
但是当你这样做时:
extern int externed_variable;
int *variable_ptr = &externed_variable;
您正在分配地址,全局变量的地址是在编译时决定的,因此是常量。 并且允许您初始化一个具有常量值的变量。
所以回答你,由于全局变量的地址是在编译期间分配的并且是恒定的,因此你不会得到错误!
关于无法将变量分配给 C 中的外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44658188/