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).