C语言 函数调用 如果没进行声明会怎么样?

例如:
#include<stido.h>
void main()
{
int max(int x,int y); ←声明部分
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("Max is %d\n",c);
}

int max(int x,int y)
{
int z;
z=x>y? x:y;
return(z)
}

如果声明部分不写会怎么样 声明部分的主要作用是什么?

1、由于程序是顺序执行,如果没有提前声明,程序会找不到函数,于是报错。
2、声明的主要作用是告诉程序我下面要用到这个函数,程序会去找这个函数的定义,然后调用。
3、也可以把nt max(int x,int y)放到main函数之前,就不用写声明了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-31
声明就是告诉编译器 有这个函数 如果再调用前没有声明,同时函数定义在调用后的话,编译器则提示调用了未定义的函数。
第2个回答  2010-03-31
不写也没关系吧..你把那行去掉,试试不就行啦。这种问题还是自己先调试一下比较好吧

不好意思,C不熟
第3个回答  2010-03-31
C语言规定,标识符必须先声明后引用。引用未经声明或者类型(如果有的话)和声明不符的标识符属于语法错误。函数名是描述有类型对象的标识符,函数调用是对函数名的引用,因此函数调用之前必须声明,否则编译器会报错。
但是要注意,函数的定义本身即包含了声明。而编译器对于一个编译单元(已经经过预处理)内的编译顺序是自前向后的,因此结论是如果调用之前函数已经定义,那么不用写额外的声明(要是再次声明的话,只要函数参数列表类型和定义的一致,也不会引起编译错误);如果定义的函数体在调用之后,那么必须先声明才能调用。
另外的一种情况是,函数的定义不在源文件而在外部库文件中,这时调用前也需要先声明(C标准库头文件里面有这样的声明)。
注意一旦声明,就必须要有定义。否则编译过程的最后链接器会报错,提示未解析的引用(也就是“找不到定义”)。
从编译的角度来说,声明是对编译器的提示,使编译器在解析标识符引用时类型验证等语法检查工作不必搁置起来占用内存,或者在后续代码中查找定义消耗额外时间。这点对于早期硬件条件吃紧的环境下的编译效率有重要意义。但是随着硬件条件的改善,这个特性的优势已经变得不是那么明显,反而加重程序员的负担。相对于C/C++,一些更“现代”的类C语言(Java、C#、D语言等)中不再有“先声明后引用”的限制。
====
[原创回答团]

参考资料:原创

本回答被提问者采纳
相似回答