外部变量似乎不起作用 "symbols not found for architecture x86_64"
Extern Variables seemingly not working "symbols not found for architecture x86_64"
我一直在通过 Whosebug 和网络搜索答案,看起来我做的是正确的,但我无法让它工作。
我制作了一个使用 extern 的测试程序,(它在 xCode 上使用项目功能,如果有区别的话)。我正在尝试声明一个变量,我可以在我的程序中的任何地方访问它,每当我更改该变量的值时,我希望能够访问更改后的值。
到目前为止我所做的是我有一个头文件
externFile.h
还有一个
externFile.c
当然还有我的
main.c
在externFile.h中我定义了:
extern int ply;
在 main.c 我有:
int main()
{
int ply;
ply = 5;
printPly();
}
在 externFile.c 我有:
void printPly(){
printf("%d is ply.\n", ply);
}
但是我收到了这个错误:
_ply referenced from _printPly
ld symbols not found for architecture x86_64
有人对此有什么想法吗?
您实际上还没有全局定义 ply
:
int main(void)
{
int ply;
ply = 5;
printPly();
}
这里,ply
是局部变量,不是全局变量,因为它是在函数内部定义的。头文件中的 extern
行没有定义全局,但是 声明了 它。它说 "this variable exists somewhere",但它不会创建它。因为没有全局定义,你得到一个未定义的引用错误。
全局变量必须在文件范围内定义,即在函数之外:
int ply = 5;
int main(void)
{
printPly();
}
我一直在通过 Whosebug 和网络搜索答案,看起来我做的是正确的,但我无法让它工作。
我制作了一个使用 extern 的测试程序,(它在 xCode 上使用项目功能,如果有区别的话)。我正在尝试声明一个变量,我可以在我的程序中的任何地方访问它,每当我更改该变量的值时,我希望能够访问更改后的值。
到目前为止我所做的是我有一个头文件
externFile.h
还有一个
externFile.c
当然还有我的 main.c
在externFile.h中我定义了:
extern int ply;
在 main.c 我有:
int main()
{
int ply;
ply = 5;
printPly();
}
在 externFile.c 我有:
void printPly(){
printf("%d is ply.\n", ply);
}
但是我收到了这个错误:
_ply referenced from _printPly
ld symbols not found for architecture x86_64
有人对此有什么想法吗?
您实际上还没有全局定义 ply
:
int main(void)
{
int ply;
ply = 5;
printPly();
}
这里,ply
是局部变量,不是全局变量,因为它是在函数内部定义的。头文件中的 extern
行没有定义全局,但是 声明了 它。它说 "this variable exists somewhere",但它不会创建它。因为没有全局定义,你得到一个未定义的引用错误。
全局变量必须在文件范围内定义,即在函数之外:
int ply = 5;
int main(void)
{
printPly();
}