编译c的时候出现error: 'test' was not declared in this scope
找了半天发现问题是这样的,在别人的电脑上,或者在线C上运行就没问题,但是在我自己这里就有问题。这是什么原因导致的?...
找了半天发现问题是这样的,在别人的电脑上,或者在线C上运行就没问题,但是在我自己这里就有问题。这是什么原因导致的?
展开
1个回答
展开全部
我这边在vsc里通过gcc编译出来是「警告」,不是「错误」,还是编译出可执行文件来了。你的编译器可能「更加严格」吧!
原因应该是,编译器编译代码的时候是从上到下编译的,在整个程序的入口main()函数的前面没有遇到过test()函数的定义或声明,那么在main()函数里要调用test()函数的话,就会找不到test()函数。
解决办法:
(1)把test()函数的完整语句块放到main()函数的上面去。
或者,
(2)在main()函数的上面,增加一句声明语句:
int test();
另外,关于「警告」在test()函数中没有return语句的问题,因为定义test()函数的时候,定义的是「int test(){}」,意思就是告诉了编译器test()函数的返回值是int型。但是在实际的代码中却没有return语句,所以编译器就提出了警告。解决办法是,要么把函数test()定义为void型,要么就在函数test(){}代码中添加一句return语句。
如有帮助,烦请点采纳,谢谢!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询