关于此错误的所有其他线程都在C ++中或处于其他情况,因此我将为其创建一个线程。尽管我为两个参数都提供了NULL,但是却出现了此错误。 NULL在这种情况下不起作用吗?
typedef struct set {
struct set_node *head;
}set_t;
typedef struct setnode{
const char *key;
void *item;
void *next;
}setnode_t;
set_t *set_new(void)
{
//Creates NULL node
set_t *set = count_malloc(sizeof(set_t));
set->head = set_new_node(NULL, NULL);
return set;
}
static *setnode_t set_new_node(const char *key, void *item)
{
setnode_t *node = count_malloc(sizeof(setnode_t));
if (node == NULL) {
return NULL;
} else {
node->key = key;
node->item = item;
node->next = NULL;
return node;
}
}
我得到的错误:
set.c:53:3: error: too few arguments to function 'set_new_node'
set->head = set_new_node(NULL, NULL);
答案 0 :(得分:0)
更改功能实现的顺序。
static *setnode_t set_new_node(const char *key, void *item)
{
setnode_t *node = count_malloc(sizeof(setnode_t));
if (node == NULL) {
return NULL;
} else {
node->key = key;
node->item = item;
node->next = NULL;
return node;
}
}
set_t *set_new(void)
{
//Creates NULL node
set_t *set = count_malloc(sizeof(set_t));
set->head = set_new_node(NULL, NULL);
return set;
}
在C语言中,函数实现的顺序很重要,或者将签名(在static setnode_t *set_new_node(const char *key, void *item);
实现之前声明set_t *set_new(void)
)