函数的声明问题
在VC6.0当中,同样是在未声明就调用函数的情况下,为什么把add()声明为int就没有报错,而把add()声明为void就报错#include <stdio.h>
void main()
{
inta=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()
{
inta=2,b=3;
printf ("a=%d, b=%d\n",a, b);
add(a,b);
printf("a=%d,b=%d\n", a,b);
}
voidadd(int x,int y)//add声明为void型
{ x=x+8; y=y+12;
printf("x=%d,y=%d\n",x,y);
} 本帖最后由 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()
{
inta=2,b=3;
printf ("a=%d, b=%d\n",a, b) ;
add(a , b) ;
printf("a=%d,b=%d\n", a,b) ;
} jackz007 发表于 2022-11-15 21:59
报错的原因和 int 、void 毫无关系,和 add() 函数在文件中的位置有关,如果 main() 在前,add()...
抱歉啊答主,虽然我也不知道为什么,但是我感觉还是没有回答到疑惑呢 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有图有真相,没声明也调用了 zwj.123 发表于 2022-11-15 22:10
抱歉啊答主,虽然我也不知道为什么,但是我感觉还是没有回答到疑惑呢
+1 我也不知道为什么,但是楼主要纠结这个么?
我的DEV C++ 不管是 void 还是 int 都会报错
VC6好像过于老旧了,编译器有点过时
页:
[1]