warning:assignment makes pointer from integer without a cast

前端 未结 2 451
孤城傲影
孤城傲影 2021-01-15 06:10

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;
                


        
相关标签:
2条回答
  • 2021-01-15 07:07

    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;
    }
    
    0 讨论(0)
  • 2021-01-15 07:15

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

    0 讨论(0)
提交回复
热议问题