Function C(VS12)中的结构错误

Function C(VS12)中的结构错误,function,struct,declaration,binary-search-tree,Function,Struct,Declaration,Binary Search Tree,我正在制作一个二进制搜索树,这是我的结构代码: struct BST { float val; struct BST* left; struct BST* right; }; 紧接着,我对我将要使用的函数做了一些声明: BST* BSTCreate(float); void BSTFree(BST*); int BSTAddElement(BST*, float); 当我尝试运行整个程序时,我会遇到一些非常奇怪的错误,比如在“*”之前缺少“{”(第1个声明行)或者在

我正在制作一个二进制搜索树,这是我的结构代码:

struct BST 
{
    float val;
    struct BST* left;
    struct BST* right;
};
紧接着,我对我将要使用的函数做了一些声明:

BST* BSTCreate(float);
void BSTFree(BST*);
int BSTAddElement(BST*, float);
当我尝试运行整个程序时,我会遇到一些非常奇怪的错误,比如
在“*”之前缺少“{”(第1个声明行)或者在“*”
(第2个12月行)之前缺少“{”(第2个声明行)函数我有一行
BST-tree;
它在一个错误中说
“tree”:未声明的标识符。
我还有30个类似于整个程序的wierd错误。这是怎么回事?

struct BST 
{
    float val;
    struct BST* left;
    struct BST* right;
};
您可以使用:

struct BST* BSTCreate(float);
void BSTFree(struct BST*);
int BSTAddElement(struct BST*, float);
为此:

typedef struct BST 
{
    float val;
    struct BST* left;
    struct BST* right;
} BST;
或者这个:

struct BST 
{
    float val;
    struct BST* left;
    struct BST* right;
};

typedef struct BST BST;
您可以使用:

BST* BSTCreate(float);
void BSTFree(BST*);
int BSTAddElement(BST*, float);

谢谢!你能解释一下这行是什么意思吗?为什么我需要它?typedef struct BST BST;@user3105173
typedef
告诉C(或C++)因为C/C++没有一个名为
BST
的类型,你可以用
typedef
定义你自己的类型。在这种情况下,你将名为
BST
的类型定义为
struct BST
。所以你不必在需要som时一直键入
struct BST
这种类型的。你可以只说
BST
。你也可以说像,
typedef unsigned long UL;
,然后使用
ulx;
如果你想
x
成为你自己的,特殊的“unsigned long”。例如,请参阅。