C 什么是;隐式函数声明“;什么意思? #包括 int main() { INTA=4; int b=3; 地址编号(a、b); } 整数地址编号(整数a、整数b) { 返回a+b; }
为什么不编译,我收到一条消息说隐式声明函数C 什么是;隐式函数声明“;什么意思? #包括 int main() { INTA=4; int b=3; 地址编号(a、b); } 整数地址编号(整数a、整数b) { 返回a+b; },c,C,为什么不编译,我收到一条消息说隐式声明函数addNumbers()?在main()中调用函数之前,需要声明函数。要么把它移到main之前,要么至少在那里声明它。 另外,您应该在主函数的末尾添加return 0,因为它应该返回int #include <stdio.h> int main() { int a = 4; int b = 3; addNumbers(a, b); } int addNumbers(int a, int b) { retur
addNumbers()
?在main()中调用函数之前,需要声明函数。要么把它移到main之前,要么至少在那里声明它。
另外,您应该在主函数的末尾添加return 0
,因为它应该返回int
#include <stdio.h>
int main()
{
int a = 4;
int b = 3;
addNumbers(a, b);
}
int addNumbers(int a, int b)
{
return a + b;
}
#包括
整数地址编号(整数a、整数b)
{
返回a+b;
}
int main()
{
INTA=4;
int b=3;
地址编号(a、b);
返回0;
}
您必须将整个addNumber()
函数移到main上方,或者提供一个原型。后者通过以下方式完成:
#include <stdio.h>
int addNumbers(int a, int b)
{
return a + b;
}
int main()
{
int a = 4;
int b = 3;
addNumbers(a, b);
return 0;
}
把addnumber放在main前面
int addNumbers(int a, int b);
int main()
{
// code of main() here
}
int addNumbers(int a, int b)
{
//code of addNumbers() here
}
更新:
要打印它,
printf(“%i”,addNumbers(a,b))在上述情况下,代码>将显示7
。在main()
之前定义函数,或者在main()
之前提供其原型
因此,要么这样做:
int addNumbers(int a, int b)
{
return a + b;
}
int main()
{
int a = 4;
int b = 3;
addNumbers(a, b);
}
#包括
整数地址编号(整数a、整数b)
{//定义
}
int main()
{//main中的代码
地址编号(a、b);
}
或者这个:
#include <stdio.h>
int addNumbers(int a, int b)
{ //definition
}
int main()
{ //Code in main
addNumbers(a, b);
}
#包括
int addnumber(int,int);
int main()
{//main中的代码
地址编号(a、b);
}
整数地址编号(整数a、整数b)
{//定义
}
在使用函数之前声明函数,方法是在main()之前添加原型:
或者将整个addNumbers函数移到main()之前。您可以将整个函数移到调用点上方,或者使用函数原型,如下所示:
int addNumbers(int a, int b);
#包括
int addnumber(int a,int b);//功能原型
int main()
{
INTA=4;
int b=3;
地址编号(a、b);
}
整数地址编号(整数a、整数b)
{
返回a+b;
}
在首次使用之前,您需要对addNumbers
函数的正向声明或其定义进行上移:
#include <stdio.h>
int addNumbers(int a, int b); // function prototype
int main()
{
int a = 4;
int b = 3;
addNumbers(a, b);
}
int addNumbers(int a, int b)
{
return a + b;
}
有三个可移植的返回值:
int main(void)
int main(int argc, char **argv)
在stdlib.h
中定义,如果编译器是C99标准编译器,它会抛出并出错“隐式声明”,因为默认升级在C99标准中已过时。
如果您尝试使用C89标准进行编译,这是允许的
在C99中,标准函数原型是必需的因为编译器在看到函数调用时会执行一行又一行,它必须有关于主函数调用的函数的信息。因此,我的朋友,在你可以使用它之前,你需要告诉编译器关于该函数的信息。我同意声明和定义的东西,但上面的代码没有任何编译错误。我的gcc版本是“4.4.1-4ubuntu9”。有什么想法吗
我做了一些修改来测试代码
0, EXIT_SUCCESS, EXIT_FAILURE
#包括
int main()
{
INTA=4;
int b=3;
printf(“%d”,addNumbers(a,b));//添加了printf。
}
整数地址编号(整数a、整数b)
{
返回a+b;
}
使用前必须声明函数。
在处理函数时,请记住这4个基本部分
声明
召唤
定义
返回
除了在main之前声明函数addNumbers之外,下面是我关于C风格的2美分(不适用于C++):1)没有参数的函数应该有签名(void)——因此intmain(void)
;2) main应该返回C中的值——因此返回0
是必需的。那么我如何打印它呢?因为当我运行它时,它什么也没有显示,我已经尝试将main从返回和的值更改为printf(addNumbers(a,b));但毫无疑问,这是另一个问题。另外,如果您使用stackoverflow.comShow代码上的搜索,我相信您可以找到答案,而且您可能应该为该代码创建新问题it@AlexanderPoluektov:实际上,C99遵循C++的领导,并且(错误地在我的观点中)允许您不返回从代码>主()/<代码>中返回的值,它相当于返回0。我认为这很悲哀,而且对确保返回值的函数总是返回值这一原则没有帮助。@ruibm:另外,你应该在主函数的末尾加上返回0,因为它应该返回int:不,这是可选的是的,我知道是,但这是一个很好的编程实践,如果你打开学究模式,编译器可能会发出警告。进一步挑剔,在C语言中,它是一个“函数”,而不是一个“方法”。否则就好了。顺便说一句,函数声明通常不是在.h文件中完成的吗?@R.Bemrose:当有多个源文件时,是的。当只有一个源文件时,如此处所示,函数应声明为静态函数(因为它不需要从任何其他文件访问,因为只有一个文件要编译)。行为未定义。根据标准:使用前必须声明函数。
int main(void)
int main(int argc, char **argv)
0, EXIT_SUCCESS, EXIT_FAILURE
#include <stdio.h>
int main()
{
int a = 4;
int b = 3;
printf("%d", addNumbers(a, b)); // Printf added.
}
int addNumbers(int a, int b)
{
return a + b;
}