передача arg2 из listFind из несовместимого типа указателя - PullRequest
0 голосов
/ 12 мая 2010

У меня возникла проблема с моей функцией, и я не знаю, как решить эту проблему. Это мой код:

ListResult result=listFind(currentLines, compareBasicLines, &linePrototype);  <-here problem

CompareBasicLines указатель на функцию

int compareBasicLines(ptrLine line1, ptrLine line2){
    COMPARE_NUMBER_STRINGS(line1, line2);
}

COMPARE_NUMBER_STRINGS(line1, line2); определено в другом файле

#define COMPARE_NUMBER_STRINGS(var1, var2)                              \
                    if(var1 == NULL || var2 == NULL){                   \
                        return 0;                                       \
                    }                                                   \
                    return strcmp(var1->strNumber, var2->strNumber);

спасибо всем заранее

это то, что у меня есть, моя домашняя работа посвящена ADT, поэтому я не знаю, что именно у меня внутри

/**
 * Searches the list for an element fitting the criteria starting from the
 * current element.
 * Note that you need to call listGetFirst if you wish to search from the start
 * of the list. The search starts from the current element.
 * @param list
 *  The list to search in
 * @param compare
 *  Comparison function to decide if an element in the last is equal to the
 *  target elemnt. This function should return 0 for equal elements
 * @param target
 *  A target element to compare with each element in the list.
 * @return
 *  LIST_NULL_ARGUMENT if list or compare are NULL
 *  LIST_INVALID_CURRENT if the current pointer of the list is in invalid state
 *  LIST_NO_SUCH_ELEMENT if no element was found from the current element until
 *  the end of the list
 *  LIST_SUCCESS an element was found and the current pointer of the list is now
 *  set to this element
 *
 */

ListResult listFind(List list, CompareListElements compare, ListElement target);

и еще одно определение

typedef int (*CompareListElements)(ListElement, ListElement);

typedef void* ListElement;

1 Ответ

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

Ваш второй аргумент listFind() имеет тип int (*)(ptrLine, ptrLine). Это очевидно отличается от типа второго параметра в объявлении listFind().

Не видя определения listFind(), трудно сказать, что вы должны сделать, чтобы это исправить.

...