我的教授這樣定義在.h文件C編譯器抱怨無效(*)
void list_map(INTLIST* list, void (*f)(void *)); /*Applies a function to each element of the list */
我寫了這樣的功能:
void list_map(INTLIST* list, void (*f)(void *))
{
INTLIST* pTemp=NULL;
if (list == NULL)
{
//list is empty
}
else
{
for(pTemp=list; pTemp->next!=NULL; pTemp=pTemp->next)
{
f(pTemp); //f is a function pointer we call list map from main like list_map(lst, list_sort)
}
}
}
我把它稱爲主這樣的:
list_map(aList[i], (void*)list_sort);
在windows環境下,沒有任何抱怨,但我必須在Linux環境下運行這個。我使用一個makefile來編譯所有的代碼,我得到這個警告和錯誤:
* C++ -O2 -c main.c main.c:在函數'int main(int,char **) ': main.c:53:warning:從字符串常量到'char *'的過時的轉換 main.c:123:錯誤:從'void()(INTLIST)'無效轉換爲'void()(空隙)」 main.c中:123:錯誤:初始化的參數2 '空隙list_map(intList中*,空隙()(空隙))' 化妝:*** [main.o]錯誤1 *
有人可以首先幫助處理錯誤,然後可能會發出警告嗎?
編輯部分:
有人問了list_sort功能,那就是:
void list_sort(INTLIST* list)
{
INTLIST* pTemp=NULL;
INTLIST* pTemp2=NULL;
pTemp=list; //temp pointers to compare node values
pTemp2=list;
if (pTemp->next !=NULL) //move to second node
{
pTemp2=pTemp2->next;
}
while(pTemp2 != NULL)
{
//we implement a selection sort
//check if incoming node->datum with each node in the list
//swap values if <
if (pTemp2->datum < pTemp->datum)
{
//swap the values
int temp = pTemp->datum;
pTemp->datum = pTemp2->datum;
pTemp2->datum = temp;
}
//advance the pointer
pTemp2=pTemp2->next;
}
}
'list_sort'是什麼樣的? – ezod 2010-01-25 02:30:32
你可以改變list_sort函數,還是由prof指定的?如果它是固定的,似乎你已經處理了一個強硬的手。 – BobS 2010-01-25 04:19:59