【发布时间】:2012-08-28 07:44:30
【问题描述】:
我正在尝试编写代码来构建堆栈,但我遇到了对我来说没有意义的编译错误。这是我的stack.h:
struct StackNode {
void* previous;
int value;
};
struct Stack {
StackNode* top;
};
Stack* new_stack () {
StackNode stn = { NULL, 0 };
Stack* st = (Stack*) malloc(sizeof(Stack));
st->top = NULL;
return st;
}
还有我的main.c:
#include <stdio.h>
#include <stdlib.h>
#include "stack.h"
int main () {
struct Stack* st = new_stack();
return 0;
}
gcc 抛出这些错误:
make (在目录:/home/diego/temp/stack) gcc -g -O2 -std=c99 -c
main.c 在 main.c:4 中包含的文件中:编译失败。 stack.h:10:
错误:“StackNode”之前的预期说明符限定符列表
stack.h:14: 错误:预期为“=”、“,”、“;”、“asm”或“属性”
在'*'标记main.c之前:在函数'main'中:main.c:8:警告:
函数‘new_stack’main.c:8的隐式声明:警告:
初始化从整数生成指针,不进行强制转换:*
[main.o] 错误 1
编辑:我发现了错误。我忘了在某些行中将struct 放在Stack 和StackNode 之前。在这些行中始终使用struct 可以解决问题。
【问题讨论】:
标签: c