#include <stdio.h>
void m();
void n() {
m();
}
void main() {
void m() {
printf("hi");
}
}
编译时出错
"undefined reference to m"
显示。指的是哪个 m
?
最佳答案
首先声明一下,
Nested functions are not standard
C
. They are supported as GCC extension.
好的,现在,在您的代码中,m()
是 main()
中的嵌套函数。它仅具有 main()
的 block 作用域。 main()
之外的其他函数看不到m()
的存在,也不能直接调用m()
。 m()
只能在 main()
内部调用。
在您的情况下,n()
中对 m()
的调用导致了问题。即使您将前向声明提供为 void m();
,链接器也无法找到 m()
的定义并抛出错误。
解决方案:将 m()
的定义移到 main()
之外,然后您可以在任何其他函数中使用它。
另请注意,main()
的推荐签名是 int main(void)
。
关于c - 为什么下面的代码会显示错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31076470/