#include <stdio.h>
int main()
{
int a = 4;
int b = 3;
addNumbers(a, b);
}
int addNumbers(int a, int b)
{
return a + b;
}
Почему это не компилируется, я получаю сообщение о неявном объявлении функции addNumbers()
?
#include <stdio.h>
int main()
{
int a = 4;
int b = 3;
addNumbers(a, b);
}
int addNumbers(int a, int b)
{
return a + b;
}
Почему это не компилируется, я получаю сообщение о неявном объявлении функции addNumbers()
?
Определить функцию перед main()
или предоставить ее прототип до main()
.
Итак, сделайте так:
#include <stdio.h>
int addNumbers(int a, int b)
{ //definition
}
int main()
{ //Code in main
addNumbers(a, b);
}
или это:
#include <stdio.h>
int addNumbers(int, int);
int main()
{ //Code in main
addNumbers(a, b);
}
int addNumbers(int a, int b)
{ // definition
}
Вам нужно объявить функцию до того, как вы ее вызове в main(). Либо переместите его перед основным, либо, по крайней мере, объявите его там.
Кроме того, вы должны попробовать добавить return 0
в конце основной функции, поскольку он должен возвращать int
.
#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()
выше основного, либо предоставить прототип. Последнее делается следующим образом:
int addNumbers(int a, int b);
int main()
{
// code of main() here
}
int addNumbers(int a, int b)
{
//code of addNumbers() here
}
Поместите addNumbers перед основным
int addNumbers(int a, int b)
{
return a + b;
}
int main()
{
int a = 4;
int b = 3;
addNumbers(a, b);
}
UPDATE
Чтобы распечатать его, printf("%i",addNumbers(a, b));
отобразит 7
в приведенном выше случае.
Вы можете переместить всю функцию выше точки ее вызова или использовать прототип функции, например:
#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;
}
Вам понадобится переднее объявление функции addNumbers
или его определение, перемещенное до первого использования:
// 2161304
#include <stdio.h>
// 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);
или переместите всю функцию addNumbers до main().
Я согласен с объявлением и определением, но я не получаю ошибок компиляции с указанным выше кодом. Моя версия gcc - "4.4.1-4ubuntu9". Все идеи.
Я сделал небольшую модификацию для проверки кода.
#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;
}
если ваш компилятор является стандартом C99, он выдает и "неявное объявление" ошибки, поскольку, поскольку продвижение по умолчанию устарело в стандарте C99. если вы попытаетесь скомпилировать стандарт C89, это будет допустимо.
В C99 необходим стандартный прототип функции
Поскольку компилятор выполняет одну строку за другой, к моменту, когда он видит вызов функции, он должен иметь информацию об этой функции, которую вызывает главная функция. Мой друг должен сообщить компилятору о функции до вы можете когда-либо использовать его.
Вы должны объявить функцию перед использованием. Помните эти четыре основные части при работе с функциями.