C function with no parameters behavior
c, signature
Solution
In C++, `void no_args()` declares a function that takes no parameters (and returns nothing).
In C, `void no_args()` declares a function that takes an unspecified (but not variable) number of parameters (and returns nothing). So all your calls are valid (according to the prototype) in C.
In C, use `void no_args(void)` to declare a function that truly takes no parameters (and returns nothing).
Problem
Can somebody explain to me why the following code does compile without a warning or error? I would expect the compiler to warn me that the function `no_args` doesn't expect any arguments. But the code compiles and runs function `no_args` recursively. ``` static void has_args(int a, int b, int c) { printf("has_args\n"); } static void no_args() { printf("no_args\n"); no_args(1, 2, 3); } void main() { no_args(); } ```