C-二元搜索树中“*”之前应为“)”

C-二元搜索树中“*”之前应为“)”,c,binary-search-tree,C,Binary Search Tree,我正在用c编写一个二元搜索树,我一直得到一个愚蠢的错误:在声明和头文件中,函数开头的“*”标记消息之前应该有 主文件 #include <stdlib.h> #include <stdio.h> #include "func.h" #define ARRAYSIZE 12 int main(int argc, char *argv[3]) { typedef struct node { int value; struct node * left;

我正在用c编写一个二元搜索树,我一直得到一个愚蠢的错误:在声明和头文件中,函数开头的“*”标记消息之前应该有

主文件

#include <stdlib.h>
#include <stdio.h>
#include "func.h"

#define ARRAYSIZE 12

int main(int argc, char *argv[3]) {

typedef struct node {
    int value;
    struct node * left;
    struct node * right;
}  * node;

node* root = NULL;

int nodes[ARRAYSIZE] = {3,6,2,1,7,8,3,5,7,2,9,4};
int i;

for(i = 0; i < ARRAYSIZE; i++) {
    root = insert(root, nodes[i]);
}


if (strcmp(argv[1], "q") == 0) quit();
if (strcmp(argv[1], "i") == 0) insert(argv[2]);
if (strcmp(argv[1], "d") == 0) delete(argv[2]); 
if (strcmp(argv[1], "s") == 0) search(argv[2]);
if (strcmp(argv[1], "e") == 0) empty(); 

return 0;
}
可能是:

    node * createNode(int value);
此时节点未知


将节点的定义移到头文件中。

如果不告诉行号错误发生的位置,错误就更傻了。而且这个问题往往会偏离主题,因为它缺少足够的信息来诊断问题。有趣的是:节点a与结构节点a不同!我希望这不是故意的?@mah这是每个函数的开头,所以它是头文件的整个声明以及它们在函数文件中初始化的第一行。所以它说它每次说void insertnode*root,int n出现。。。但它适用于所有功能。@重复数据消除程序您这是什么意思?很可能。。。他的主文件有一个include of func.h,它需要节点类型,但该类型仅在该主文件中定义。另外,他的函数文件根本无法访问类型定义。这导致在非结构或文件中大量生成成员“left”/“right”/“value”的错误请求union@user3362954您不能一直在此处转储编译器错误。出现此错误是因为需要在struct node之前向前声明节点。
#ifndef FUNC_H
#define FUNC_H

node * createNode(int value);
void insert(node * root, int n);
void search(node * root, int n);
void empty(node * root);
void delete(node * root, int n);
int quit();

#endif
    node * createNode(int value);