警告:赋值使得整型指针没有强制转换

这是一个很常见的问题,但我没有得到答案,所以再次提出这个问题。

我有structers定义为:

struct f_lock{ int x; struct f_lock *next; }; 

然后说我有一个function:

 struct f_lock *new_node() { struct f_lock *new_f_lock; ..... return new_f_lock; } 

我从另一个函数调用:

 struct f_lock *new_f_lock; new_f_lock = new_node(); //This line gives the error warning:assignment makes pointer from integer without a cast 

将grateull求救谢谢

你是否也获得了implicit declaration of function 'new_node'的错误implicit declaration of function 'new_node' ? 因为在这种情况下,你可能忘了在你调用它的模块中声明new_node 。 (如果您没有收到该错误,请使用-Wall重新编译以打开更多警告。)

警告消息的解释:如果new_node没有正确声明,编译器会认为它返回int ,这是一种默认的返回类型(由于历史原因)。

我似乎记得当我忘记声明一个函数作为void c(但不是c ++)所需的函数没有参数的函数时,得到这个(相当误导)的错误消息:

 struct f_lock *new_node() { struct f_lock *new_f_lock; ..... return new_f_lock; } 

应该:

 struct f_lock *new_node(void) { struct f_lock *new_f_lock; ..... return new_f_lock; }