“隐含的function声明”是什么意思?
#include int main() { int a = 4; int b = 3; addNumbers(a, b); } int addNumbers(int a, int b) { return a + b; }
为什么这不编译,我得到一条消息说明函数addNumbers()
隐式声明?
在main()
之前定义函数或在main()
之前提供其原型。
所以要么这样做:
#include int addNumbers(int a, int b) { //definition } int main() { //Code in main addNumbers(a, b); }
或这个:
#include int addNumbers(int, int); int main() { //Code in main addNumbers(a, b); } int addNumbers(int a, int b) { // definition }
在main()中调用之前,需要声明该函数。 要么在主要之前移动它,要么至少在那里声明它。 另外,你应该在main函数的末尾添加return 0
,因为它应该返回int
。
#include 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 }
在main之前添加addNumbers
int addNumbers(int a, int b) { return a + b; } int main() { int a = 4; int b = 3; addNumbers(a, b); }
更新 :
要打印它, printf("%i",addNumbers(a, b));
将在上述情况下显示7
。
您可以将整个函数移动到调用它的位置之上,或者使用函数原型,如下所示:
#include 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; }
您需要在第一次使用之前向上移动addNumbers
函数或其定义的前向声明:
// 2161304 #include // forward declaration int addNumbers(int a, int b); int main() { int a = 4; int b = 3; addNumbers(a, b); } // alternatively move this up before main ... int addNumbers(int a, int b) { return a + b; }
关于main
和return
:
程序将编译没有。 标准定义的主要签名是:
int main(void) int main(int argc, char **argv)
有三个便携式返回值:
0, EXIT_SUCCESS, EXIT_FAILURE
它们在stdlib.h
中定义。
在使用之前通过在main()之前添加原型来声明函数:
int addNumbers(int a, int b);
或者在main()之前移动整个addNumbers函数。
我同意声明和定义的事情,但我没有得到上述代码的任何编译错误。我的gcc版本是“4.4.1-4ubuntu9”。任何想法。
我做了一些修改来测试代码。
#include int main() { int a = 4; int b = 3; printf("%d", addNumbers(a, b)); // Printf added. } int addNumbers(int a, int b) { return a + b; }
如果你的编译器是C99标准它会抛出并且错误“隐式声明”,因为默认促销在C99标准中已经过时了。 如果你尝试使用C89标准进行编译,这将是允许的。
在C99中,标准function原型是必要的
由于编译器一个接一个地执行一行,当它看到函数调用时,它必须有关于该函数调用的函数,所以我的朋友你需要先告诉编译器这个函数。用它。
您必须在使用前声明该function。 在处理function时,请记住这4个基本部分。
- 宣言
- 呼叫
- 定义
- 返回