предупреждение: присваивание делает указатель из целого числа без приведения - PullRequest
2 голосов
/ 24 июня 2011

Это довольно распространенный вопрос, но я не получил свой ответ, поэтому задаю его снова.

У меня есть структуры, определенные как:

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

Тогда скажите, что у меня есть функция:

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

Буду благодарен за помощь Спасибо

Ответы [ 2 ]

6 голосов
/ 24 июня 2011

Вы тоже получили ошибку implicit declaration of function ‘new_node’?Потому что в этом случае вы, вероятно, забыли объявить new_node в модуле, где вы его вызываете.(Если вы не получаете эту ошибку, перекомпилируйте с -Wall, чтобы включить больше предупреждений.)

Объяснение предупреждающего сообщения: если new_node не было объявлено должным образом, компилятор предположит, что он возвращаетint, который является своего рода типом возврата по умолчанию (по историческим причинам).

1 голос
/ 25 июня 2011

Кажется, я помню, как получал это (довольно вводящее в заблуждение) сообщение об ошибке, когда я забыл объявить функцию как принимающую 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...