这是一个很常见的问题,但我没有得到答案,所以再次提出这个问题。
我有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; }