Its quite a common question but I have not got my answer so asking it again.
I have structers defined as:
struct f_lock{
int x;
I seem to remember getting this (rather misleading) error message once when I had forgotten to declare a function as taking void which is required in c (but not c++) for functions with no parameters:
struct f_lock *new_node()
{
struct f_lock *new_f_lock;
.....
return new_f_lock;
}
Should be:
struct f_lock *new_node(void)
{
struct f_lock *new_f_lock;
.....
return new_f_lock;
}
Did you also get the error implicit declaration of function ‘new_node’? Because in that case, you probably forgot to declare new_node in the module where you're calling it. (If you're not getting that error, recompile with -Wall to turn more warnings on.)
Explanation of the warning message: if new_node has not been declared properly, the compiler will assume it returns int, which is a kind of default return type (for historical reasons).