中易网

急~~~~C语言问题:为什么把函数写在主函数后面,但没在主函数内声明,却没有报错?

答案:7  悬赏:40  
解决时间 2021-01-11 20:20
  • 提问者网友:孤凫
  • 2021-01-10 20:58
急~~~~C语言问题:为什么把函数写在主函数后面,但没在主函数内声明,却没有报错?
最佳答案
  • 二级知识专家网友:雾月
  • 2021-01-10 22:09
应该是你编程软件的问题。只要软件没问题,前面没有任何定义,肯定会提示sushu(i)未定义的。
全部回答
  • 1楼网友:一袍清酒付
  • 2021-01-11 02:24
被调函数写在主函数后面是被允许的,但是在主函数内部进行声明,声明方法具体是
void main()
{ 类型说明sushu(int n);
....}
就是跟定义一个函数一样的
追问:我知道,但为什么我没声明,结果却是对的?
追答:这是系统默认的写作模式,如果正确的话可能软件的主函数跟被调函数在一个模块上,主函数能搜索到,我也不太清楚,我晚上回去搜索下, 有答案再告诉你
  • 2楼网友:轻熟杀无赦
  • 2021-01-11 01:35
warning C4013: 'sushu' undefined; assuming extern returning int
这个只报warning,这是因为在C++的编译环境下。
  • 3楼网友:掌灯师
  • 2021-01-11 01:22
这里是个 隐式声明 问题
C语言的编译器 在没有发现函数原型的 时候 会 自动产生一个 隐式的函数声明
这个隐式的函数声明 的返回值 是int
  • 4楼网友:春色三分
  • 2021-01-11 00:19
在c语言中,如果定义函数时选择默认返回类型(即int类型),则这个函数放在任意位置都是可以被别的程序调用的,而且编译无误~ 但是这是一个很大的陷阱。你会发现当你给那个函数任意个参数时,编译也能通过,还能执行,但是很可能产生错误。
楼主如果你试试 在main里 这么写 看看结果
1、 sudu(4,i,100,4,5,6)
2、sudu(i)
3、sudu(4)
你可以参考c语言函数声明的陷阱~
  • 5楼网友:洎扰庸人
  • 2021-01-11 00:08
表示VC6.0报错编译器问题吧
  • 6楼网友:傲气稳了全场
  • 2021-01-10 23:31
这里涉及到一个路径的问题。我们编写好的程序main函数是入口,当编译器变异的时候会根据里面调用到的其他函数去寻找加载进来一起编译(非main函数如果不被main函数调用其实根本上就没用,这里指的是不被main函数调用和main函数调用过的函数调用),假如是include进来的编译器就知道去库函数里面加载那一个函数,而没有include进来的就会在本目录下检索,假如检索不到就编译出错。库函数所在就相当于老地方,而main函数所在的地方就相当于本地,这两个都是被编译器熟知的。
其实除了c语言,java也会这样,不在同一个包内的类需要导入,在同一个包里面的类不需要导入(import),在同一个java文件里面的类(内部类或者类外面定义的类都一样)也不需要导入。因为编译器知道在这两个地方找,去类库找就需要指定哪一个。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息