Why does a function with no parameters (compared to the actual function definition) compile?

I’ve just come across someone’s C code that I’m confused as to why it is compiling. There are two points I don’t understand.

  1. The function prototype has no parameters compared to the actual function definition.

  2. The parameter in the function definition does not have a type.


#include <stdio.h>

int func();

int func(param)
{
    return param;
}

int main()
{
    int bla = func(10);    
    printf("%d", bla);
}

Why does this work?
I have tested it in a couple of compilers, and it works fine.

11 Answers
11

Leave a Comment