鱼C论坛

 找回密码
 立即注册
查看: 3222|回复: 5

函数的声明问题

[复制链接]
发表于 2022-11-15 21:42:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在VC6.0当中,同样是在未声明就调用函数的情况下,为什么把add()声明为int就没有报错,而把add()声明为void就报错
#include <stdio.h>
void main(  ) 
{
        int  a=2,b=3; 
        printf ("a=%d, b=%d\n",a, b); 
        add(a,b); 
        printf("a=%d,b=%d\n", a,b); 
} 
int        add(int x,int y)  //add声明为int型
{        x=x+8; y=y+12; 
        printf("x=%d,y=%d\n",x,y); 
} 
#include <stdio.h>
void main(  ) 
{
        int  a=2,b=3; 
        printf ("a=%d, b=%d\n",a, b); 
        add(a,b); 
        printf("a=%d,b=%d\n", a,b); 
} 
void  add(int x,int y)  //add声明为void型
{        x=x+8; y=y+12; 
        printf("x=%d,y=%d\n",x,y); 
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-15 21:59:41 | 显示全部楼层
本帖最后由 jackz007 于 2022-11-15 22:01 编辑

        报错的原因和 int 、void 毫无关系,和 add() 函数在文件中的位置有关,如果 main() 在前,add() 函数定义在后,那就是调用在前,函数定义在后,会出现函数 add() 未定义错误,所以,这样写,在调用 add() 之前,必须先对这个函数进行声明,否则,需要把 add() 函数的定义位置提前到调用位置之前,也就是,把 main() 放到文件最后。
        编译一下这个曾经报错的代码,看看是不是还在报错?
#include <stdio.h>

void add(int x , int y)
{        x = x + 8 ; y = y + 12     ; 
        printf("x=%d,y=%d\n",x,y)   ; 
}

int main() 
{
        int  a=2,b=3; 
        printf ("a=%d, b=%d\n",a, b) ;
        add(a , b)                   ;
        printf("a=%d,b=%d\n", a,b)   ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 22:10:24 | 显示全部楼层
jackz007 发表于 2022-11-15 21:59
报错的原因和 int 、void 毫无关系,和 add() 函数在文件中的位置有关,如果 main() 在前,add()  ...

抱歉啊答主,虽然我也不知道为什么,但是我感觉还是没有回答到疑惑呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-15 22:15:37 | 显示全部楼层
jackz007 发表于 2022-11-15 21:59
报错的原因和 int 、void 毫无关系,和 add() 函数在文件中的位置有关,如果 main() 在前,add()  ...

file:///D:/%E6%A1%8C%E9%9D%A2%E6%96%87%E4%BB%B6%E5%A4%B9/%E7%85%A7%E7%89%87/%E5%A3%B0%E6%98%8E.png有图有真相,没声明也调用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 22:03:50 | 显示全部楼层
zwj.123 发表于 2022-11-15 22:10
抱歉啊答主,虽然我也不知道为什么,但是我感觉还是没有回答到疑惑呢

+1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-16 22:21:47 | 显示全部楼层
我也不知道为什么,但是楼主要纠结这个么?
我的DEV C++ 不管是 void 还是 int 都会报错
VC6好像过于老旧了,编译器有点过时
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 09:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表