Весь приведённый далее код оформлен с использованием clang-format
#include<stdio.h>intfoo(){printf("in foo()\n");// do smth}intmain(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>intfoo(void){printf("in foo()\n");// do smthreturn0;}intmain(void){foo();// do smth// good practicereturn0;}