代码农民 发表于 2016-11-19 19:01:40

VC6.0的疑或..

本帖最后由 代码农民 于 2016-11-19 19:36 编辑

我在VC6.0里新建了一个工程,在工程里面又建了几个文件,如下图:(图片可以点击放大)



经过编译连接可以运行。


这里面有一点疑问,还请大家教教我:
1.c中的main函数要调用f2必须在main前声函数原型,我把它加入到了头文件g.h中并在1.c中包含了,于是main能调用2.c中的f2函数(如果没有包含,工程会编译出错)。


在2.c文件中函数没有声明f3的函数原型,但工程能编译通过。请问为什么?,f3函数不是在3.c文件中吗?为什么在main中没有原型就不行,而在2.c中没有原型就可以..?

仰望天上的光 发表于 2016-11-19 19:58:00

C语言中如果调用之前没有声明改函数,则该函数默认返回值为int类型,参数类型为输入实参的类型;如果这个假设与实际不符,就会报错。
比较好的做法是调用函数之前都要声明。

代码农民 发表于 2016-11-19 20:01:25

仰望天上的光 发表于 2016-11-19 19:58
C语言中如果调用之前没有声明改函数,则该函数默认返回值为int类型,参数类型为输入实参的类型;如果这个假 ...

.....您再看一下我的问题,{:5_111:}

人造人 发表于 2016-11-19 20:42:17

代码农民 发表于 2016-11-19 20:54:31

人造人 发表于 2016-11-19 20:42


你能运行么?

代码农民 发表于 2016-11-19 21:07:03

人造人 发表于 2016-11-19 20:42


newu 发表于 2016-11-19 22:36:30

看图

四十二 发表于 2016-11-20 01:01:54

...
大家都说的很明白了,我就不说了……

人造人 发表于 2016-11-20 10:22:16

代码农民 发表于 2016-11-19 21:07


编译器不一样,结果也不一样,就是这样

代码农民 发表于 2016-11-20 10:25:25

四十二 发表于 2016-11-20 01:01
...
大家都说的很明白了,我就不说了……

唉..

代码农民 发表于 2016-11-20 10:28:58

人造人 发表于 2016-11-20 10:22
编译器不一样,结果也不一样,就是这样

恩,很感谢,你已经帮我2回了..

仰望天上的光 发表于 2016-11-20 21:29:07

代码农民 发表于 2016-11-20 10:28
恩,很感谢,你已经帮我2回了..

1. 请楼主认真看我之前的回帖
2. 之所以6楼代码报错,是因为LZ把源文件扩展名写成.cpp了,这就会以C++语言的标准来编译

代码农民 发表于 2016-11-20 21:31:23

仰望天上的光 发表于 2016-11-20 21:29
1. 请楼主认真看我之前的回帖
2. 之所以6楼代码报错,是因为LZ把源文件扩展名写成.cpp了,这就会以C++语 ...

报歉..
页: [1]
查看完整版本: VC6.0的疑或..