I try to figure out why my c-compiler gives me no warning/error with following (simplified) code.
The function-declaration have no parameters while the function-implemen
In C this function declaration
void foo();
means that there is nothing known about the function parameters in the point of the declaration.
The types and number of the parameters are deduced from a function call.
As for your program then this call
foo();
has undefined behavior because the number of parameters and the number of arguments mismatch.