当我尝试使用此代码测试我的代码时,我得到警告初始化使指针形式的整数不带强制转换
#include <stdio.h>
#include <string.h>
#include "List.h"
#include "List.c"
int main()
{
int k;
// make list
ListP r = newlist();
//check if empty
k = isEmptyList(r);
if(k=0)
{
printf("this list is empty");
}
else
{
printf("List not empty");
}
//display
displayList(r);
//insert
insertItemList(r, "shuan");
//check if empty
k = isEmptyList(r);
if(k=0)
{
printf("this list is empty");
}
else
{
printf("List not empty");
}
//display
displayList(r);
return 0;
}
该错误表明它与newList()一致,新列表的函数是
typedef struct List
{
struct Node* head;
int size;
}List;
typedef struct Node
{
char *info;
struct Node* next;
}Node;
typedef struct Node *NodeP;
typedef struct List *ListP;
//makes a list
ListP newList()
{
List *p;
ListP g;
p = (List*) malloc(sizeof(List));
if(p == NULL)
{
fprintf(stderr, "Memory allocation failed!\n");
exit(1);
};
p->size = 0;
p->head == NULL;
g = p;
return g;
};
这是否意味着函数正在退出1,因为malloc没有为列表分配内存并且语法不正确,或者代码是否存在其他问题?任何见识将不胜感激。
最佳答案
可能您还会收到有关“未知”功能的警告。这意味着函数newList
存在问题,并且编译器假定未知函数返回int,然后继续。
可能的原因:该函数名为newList,但是您使用了
ListP r = newlist();
^
您应该仔细检查是否包含正确的标题和名称正确,并且在使用该函数之前已声明该函数。搜索区分大小写(默认情况下,grep区分大小写,因此类似
grep -r "newlist" . // verify
grep -r "newList" . // again...
将起作用)在您的项目根目录中的“ newlist”和“ newList”。你也不要
#include "List.c"
但只有
#include "List.h"
然后还要更正
p->head == NULL;
与赋值p->head = NULL;
的比较关于c - 警告初始化使指针形式为整数而不进行强制转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26206647/