9. Non-void функции
Last updated
Last updated
#include <stdio.h>
int foo()
{
printf("in foo()\n");
// do smth
}
int main(void)
{
foo();
// do smth
}
Здесь void
относится и к возвращаемому значению функции, и к указанию типа void
в аргументах функции.
void
в аргументах функции показывает, что данная функция не принимает аргументов. В C до C23 int foo()
– функция, которая принимает неопределенное количество параметров (если они не используются в определении функции).
Во-вторых, функция foo
имеет тип возвращаемого значения int
, однако в оригинальной версии кода там не было return
. Соответственно код продолжит исполняться дальше и в какой-то момент программа упадёт.
Также:
Executing the return statement in a no-return function is undefined behavior. (since C11)
#include <stdio.h>
int foo(void)
{
printf("in foo()\n");
// do smth
return 0;
}
int main(void)
{
foo();
// do smth
// good practice
return 0;
}