Many programmers already know about header files and function declarations; however only few ones might know about different types of function declarations. There are 2 types of function declarations: function declaration without prototypes, and function declaration with prototypes.

When you declare a function without prototype, compiler doesn’t know anything about parameter types; so it may not help you by converting arguments to the right types and user is responsible for providing arguments with right types when calling a function. In the following valid C program, as you can see, I’ve called two functions in some wrong ways but compiler will not prevent me.

It’s a really bad programming practice, isn’t it? Well, you can declare a function with prototype. In this type of declaration you provide type of all parameters to the compiler; so compiler can now prevent you from invalid calls to functions.

So as you can see whenever you declare a function with nothing inside parenthesis, you declare that function without prototype. That’s why it is recommended to always specify void for parameter-less function declarations.

Written by

UNIX and C lover

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store