int func (int,int);
int main ()
{
printf("hello");
}
考虑上述功能。定义func
等函数的目的是什么?我反复看过这个。
答案 0 :(得分:1)
int func(int, int);
不定义函数,但通过提供其原型来声明它。这是编译器的“承诺”,最新的链接器将提供一个暴露这种函数的模块。
功能的原型包括:
参数的名称与声明的上下文无关。
只需要为函数的实现提供函数的参数'名称,这可能如下所示:
int func(int a, int b)
{
return a + b;
}
另一方面,这个
int func(int a, int)
{
return a;
}
无效。
C标准明确指出:
如果声明符包含参数类型列表,则每个参数的声明应为 包括标识符,除了由单个参数列表组成的特殊情况 void类型的参数,在这种情况下不应有标识符。没有声明清单 应该遵循。
答案 1 :(得分:1)
所有其他答案都没有明确回答正确的问题,所以我在这里添加一个。
首先,它不是定义的功能,因为身体缺失。这种语义称为函数声明。
在调用函数之前,编译器需要知道函数究竟是什么。这被命名为"原型"。在生成调用函数的正确代码之前,必须知道原型。请考虑以下代码:
// No previous info
int a = func(1, 3);
编译器不知道它是在调用int func(int, int)
还是long func(char, double)
,如果实际函数是FILE* func(void*)
,它也不会执行错误检查。
使用正确的原型,编译器能够执行必要的检查并生成该函数调用的相应代码。
答案 2 :(得分:0)
它不是函数定义,而是函数声明。函数声明通知编译器函数具有的参数个数,函数参数的类型以及函数返回值的类型。
1)它告诉函数返回的数据的返回类型。
2)它告诉传递给函数的参数数量。
3)它告诉每个传递参数的数据类型。
4)它还告诉参数传递给的顺序 功能
5)它告诉函数的名称(标识符)。
答案 3 :(得分:0)
这只是一个函数的函数声明,告诉编译器名称为func
的函数在结尾处存在定义。
考虑这个例子:
#include<stdio.h>
int func (int,int);
int main()
{
printf("hello\n");
int c= func(5,4);
printf("%d\n",c);
}
int func(int a, int b)
{
return a+b;
}