我的教授这样定义在.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