возможные решения предупреждения - PullRequest
0 голосов
/ 12 мая 2010

У меня очень большой код, поэтому я не могу опубликовать здесь весь свой код, может кто-нибудь объяснить, что может быть проблемой, если у меня ошибка incompatible pointer type и дать мне несколько способов ее решения, заранее спасибо

просто небольшое уточнение: я работаю с указателями на функции

ptrLine createBasicLine(){
    DECLARE_RESULT_ALLOCATE_AND_CHECK(ptrLine, Line);
    result->callsHistory = listCreate(copyCall,destroyCall);          <-here
    result->messagesHistory = listCreate(copyMessage,destroyMessage); <-and here
    result->linesFeature = NULL;
    result->strNumber = NULL;
    result->lastBill = 0;
    result->lineType = MTM_REGULAR_LINE;
    result->nCallTime = 0;
    result->nMessages = 0;
    result->rateForCalls = 0;
    result->rateForMessage = 0;
    return result;
}

copyCall, destroyCall - указатели на функции

/**
 * Allocates a new List. The list starts empty.
 *
 * @param copyElement
 *  Function pointer to be used for copying elements into the list or when
 *  copying the list.
 * @param freeElement
 *  Function pointer to be used for removing elements from the list
 * @return
 *  NULL - if one of the parameters is NULL or allocations failed.
 *  A new List in case of success.
 */
List listCreate(CopyListElement copyElement, FreeListElement freeElement);

определения функций

ptrCall (*createCall)() = createNumberContainer;

void (*destroyCall)(ptrCall) = destroyNumberContainer;

ptrCall (*copyCall)(ptrCall) = copyNumberContainer;

1 Ответ

2 голосов
/ 12 мая 2010

Я должен представить, что используемый вами указатель имеет несовместимый тип для некоторого контекста, в котором вы пытаетесь его использовать.

  1. Прекратить использование указателя в этом контексте.
  2. Используйте другой указатель.
  3. Изменить контекст, чтобы он был совместим с типом указателя.
  4. Привести указатель на совместимый тип для контекста.

Из них последний может показаться наиболее привлекательным, поскольку, скорее всего, вы довольно быстро обойдете компилятор. К сожалению, это, вероятно, сделает ваш код неработающим странным и непредсказуемым образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...