我正在使用纯C进行一个小项目。我使用gcc编译器(这就是想法)。 我有一个结构如下:
struct STACK{
char var;
struct STACK* next;
struct STACK* prev;
};
我的函数f()中的值稍低:
STACK head;
head->var='a';
printf("%c", head->var);
现在,在编译期间我收到错误:
: In function ‘f’:
:13:3: error: unknown type name ‘STACK’
:14:7: error: invalid type argument of ‘->’ (have ‘int’)
:15:20: error: invalid type argument of ‘->’ (have ‘int’)
有人可以解释我有什么问题吗?当我在C ++和g ++工作时,一切似乎都很好。
================= 编辑:
好的,这很有用,但现在我必须动态创建STRUCT类型的结构,并且只保留pionters。是否有可能在C?
答案 0 :(得分:4)
您需要在结构名称struct
之前添加STACK
关键字:
struct STACK head;
而不是:
STACK head;
此外,您正在使用通常应用于指针的->
。只需使用.
代替:
head.var
请记住:
x->y
可以翻译成:
(*x).y
最后,如果您将结构定义为:
typedef struct {
char var;
struct STACK* next;
struct STACK* prev;
} STACK;
您可以将变量声明为:
STACK head;
答案 1 :(得分:1)
定义没问题,但要声明变量,请尝试:
struct STACK head;
并引用它的成员,
head.var = 'a';
答案 2 :(得分:1)
由于您没有为结构提供typedef,因此需要声明为
struct STACK head;
head
也不是指针,因此当您加入其成员时,->
的使用应替换为.