c - 错误:函数“set_new_node”的参数太少
问题描述
这个错误的所有其他线程要么在 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);
解决方案
改变函数实现的顺序。
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)
)
推荐阅读
- .htaccess - .htaccess 用 THE_REQUEST 重写
- javascript - “TimeoutError:Knex:获取连接超时。池可能已满。” 使用 Knex.js 插入 5000 多行时
- android - 从 alpha-2 迁移到 alpha-3 时,Android MotionLayout 崩溃
- html - 响应式文本,如何启用滚动而不是下一行/换行?
- docker - 重命名文件后重命名文件时出现 PermissionError 13
- javascript - 如何在括号内声明变量?
- protobuf.js - 将 protobuf.js 类型转换为自定义格式
- javascript - 如何响应式更新 vue.js 循环中的数组?
- swift - 无法分配 CustomViewcontroller 类型的值
键入 CustomViewcontroller - html - 提交后如何禁用按钮