什么是未定义的参考/未解决的外部符号错误?什么是常见原因以及如何修复/预防它们?
随意编辑/添加您自己的.
c++ c++-faq linker-errors unresolved-external undefined-reference
我有以下测试代码,文件test.c:
#include <stdio.h>
int *func()
{
int i = 123;
return &i;
}
int main()
{
printf("%d\n", *func());
}
Run Code Online (Sandbox Code Playgroud)
如果我使用命令来编译它就可以了,
#include <stdio.h>
int *func()
{
int i = 123;
return &i;
}
int main()
{
printf("%d\n", *func());
}
Run Code Online (Sandbox Code Playgroud)
它将有以下警告信息:
gcc test.c -o test
Run Code Online (Sandbox Code Playgroud)
但可以输出结果:123
如果我使用命令:
warning: address of stack memory associated with local variable 'i'
returned [-Wreturn-stack-address]
return &i;
^
1 warning generated.
Run Code Online (Sandbox Code Playgroud)
将会有如下错误信息:
gcc -Werror test.c -o test
Run Code Online (Sandbox Code Playgroud)
现在我想使用-Werror选项,但我也想忽略与局部变量“i”警告关联的堆栈内存的地址。我应该怎么办?