“在'->'标记之前的预期'=',',',';','asm'或'__attribute__'

时间:2018-11-13 21:08:50

标签: c

所以这是从头到尾我出现错误的代码。我检查了每个指针关系和sintax规则不止一次,但是对于最后三行,编译器说:

"Expected '=', ',', ';', 'asm' or '__attribute__' before '->' token

怎么了/遗漏了?

代码:

typedef char labeltype;

typedef struct celltag{
labeltype label;
struct celltag* leftchild;
struct celltag* rightchild;
}celltype;

typedef celltype* BiTree;
typedef celltype* node;

node LAMBDA;
LAMBDA->label='A';
LAMBDA->leftchild=NULL;
LAMBDA->rightchild=NULL;

2 个答案:

答案 0 :(得分:3)

您的代码中没有任何功能,说明只能出现在功能中。

以下几行是指令,必须在函数中:

LAMBDA->label='A';
LAMBDA->leftchild=NULL;
LAMBDA->rightchild=NULL;

我建议将这些说明放入主要功能中:

typedef char labeltype;

typedef struct celltag{
labeltype label;
struct celltag* leftchild;
struct celltag* rightchild;
}celltype;

typedef celltype* BiTree;
typedef celltype* node;

int main(void)   /* This is where a function starts */
{
    node LAMBDA;

    printf("Program Start\n");
    LAMBDA->label='A';
    LAMBDA->leftchild=NULL;
    LAMBDA->rightchild=NULL;
    printf("Program End\n");
    return 0;
}    /* This is the end of the function */

答案 1 :(得分:1)

在C语言中,所有可执行代码都在内部函数中编写。您不能只在文件中间编写语句。

在C中的文件级别,您只能编写声明。代码中的所有内容都是声明,直到您到达最后三行为止。最后三行不是声明。您不能在文件级写它们。