#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;
}