#include <stdio.h>
void m();
void n() {
m();
}
void main() {
void m() {
printf("hi");
}
}
关于编译,错误
“对m的未定义的引用”
会显示出来。指的是哪个m
?
发布于 2015-06-26 15:05:33
首先,让我明确声明,
好的,现在,在您的代码中,m()
是main()
中的一个嵌套函数。它只有main()
的块范围。在main()
之外,其他函数不能看到m()
的存在,也不能直接调用m()
。m()
只能在main()
中调用。
在您的示例中,调用m()
In n()
是导致问题的原因。即使您将前向声明提供为void m();
,链接器也无法找到m()
的定义并抛出错误。
解决方案:将m()
的定义移到main()
之外,然后可以从任何其他函数中使用它。
还请注意,推荐的main()
签名是int main(void)
。
https://stackoverflow.com/questions/31076470
复制相似问题