我正在用纯 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 类型的结构,并且只保留指针给它们。在 C 中可以吗?
最佳答案
需要在结构名STACK
前加上struct
关键字:
struct STACK head;
代替:
STACK head;
您还使用了通常应用于指针的->
。只需使用 .
代替:
head.var
请记住:
x->y
可以翻译成:
(*x).y
最后,如果您将结构定义为:
typedef struct {
char var;
struct STACK* next;
struct STACK* prev;
} STACK;
您可以将变量声明为:
STACK head;
关于c - 纯 C 中的“结构”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21505881/