2010-05-12 4 views
0

У меня очень большой код, поэтому я не могу публиковать здесь весь мой код, может кто-нибудь объяснить, что может быть проблемой, если у меня есть ошибка 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); 

definit Ионы функций

ptrCall (*createCall)() = createNumberContainer; 

void (*destroyCall)(ptrCall) = destroyNumberContainer; 

ptrCall (*copyCall)(ptrCall) = copyNumberContainer; 
+2

Вы даже не можете опубликовать строку кода с ошибкой на ней? – Salgar

+4

Чувак, опубликуйте хотя бы строку, вызывающую эту ошибку ... и полный журнал ошибок (по крайней мере, полная строка, содержащая ошибку). Если вы не можете этого сделать, я думаю, никто не захочет потратить некоторое время, чтобы помочь вам. – BlueTrin

+2

Вам нужно отправить сообщение с ошибкой, декларацией для функции и любыми typedefs, которые у вас есть, которые относятся к функции –

ответ

2

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

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

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

Смежные вопросы