Назначение предупреждений от несовместимого типа указателя при назначении другому параметру - PullRequest
0 голосов
/ 17 декабря 2018

В коде я получаю это предупреждение при компиляции.Я пытался это исправить, но я не могу решить эту проблему.

  static uint8_t tx_data;

 int *recvdata2,*recvdata;
 recvdata= str2int(tx_data); //warning assignment from incompatible pointer type
recvdata2=(uint8_t*)&recvdata

str2int - это функция для преобразования строки в целое число.

   int str2int(char *str)
{
    int res=0;
    int i;
    for ( i = 0; str[i] != '\0'; ++i)
    res=(res)*10+str[i]-'0';
    return res;
}

Я новичок вэтот.Пожалуйста, помогите мне решить эту проблему.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018
  • Вы знаете, что у вас есть функция int str2int(char *str).
  • Таким образом, при вызове этой функции вы должны убедиться, что вы передали char* в качестве параметра и взяли int в качестве результатаtype.
  • При получении ошибок компилятора вы проверяете, используете ли вы правильные типы.Оказывается, вы передаете uint8_t вместо char* и используете int* для типа возврата вместо int.
  • Кроме того, очевидно, что функция ожидает, что вызывающая сторона выделит данные, поэтому char* должен указывать на выделенный массив.

Резюме: вы не можетепрограмма методом проб и ошибок.Сначала проверьте функцию, убедитесь, что вы знаете, чего она ожидает, а затем напишите вызывающий код.

0 голосов
/ 17 декабря 2018

В настоящее время вы пытаетесь назначить int для int * Вы видите recvdata - указатель на int.

Изменить, как показано ниже.

 int *recvdata2, recvdata;
 recvdata = str2int(tx_data);
 recvdata2 = &recvdata
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...