I came across this piece of code in C:
#include <stdio.h>
main( )
{
int i = 5;
workover(i);
printf("%d",i);
}
workover(i)
int i;
{
i = i*i;
return(i);
}
I want to know how the declaration of the function "workover" is valid? What happens when we don't mention the return type of a function? (can we return anything?).The parameter is also just a variable name, how does this work?
The function declaration syntax was used in older versions of C, and is still valid, so the code fragment "workover(i) int i;" is equivalent to "workover(int i)". Although, I think it may still generate warnings or even errors, depending on what compiler options you use.
When I compile your code as
$ gcc common.c -o common.exe -Wall
(Trying it over Cygwin Terminal as I don't have my linux system with me right now)I get following warnings:
return type defaults to ‘int’
which means that if you don't specify a return type, compiler will implicitly declare it asint
.implicit declaration of function ‘workover’
since the compiler doesn't know whatworkover
is.You should do it this way:
If you do not specify a return type or parameter type, C will implicitly declare it as
int
.This is a "feature" from the earlier versions of C (C89 and C90), but is generally considered bad practice nowadays. Since the C99 standard (1999) does no longer allow this, a compiler targeting C99 or later will likely give you a warning similar to the following: