我构建了一个堆栈数据结构,它有一个peek
方法。在主要调用peek
时,编译器给我一个warning: initialization makes pointer from integer without a cast
警告。以下是我有:链接头文件
stack.h
:
struct stack_elem {
struct stack_elem *next;
};
struct stack {
struct stack_elem *top;
};
void stack_init(struct stack *stack);
int isEmpty(struct stack *);
struct stack_elem * peak(struct stack *);
及其实施:
void stack_init(struct stack *stack) {
stack->top = NULL;
}
int isEmpty(struct stack *stack) {
if (stack->top == NULL)
return 1;
else
return 0;
}
struct stack_elem * peek(struct stack *stack) {
if (isEmpty(stack) == 1)
return NULL;
else
return stack->top;
}
在我main.c
,我定义堆栈,如下所示:
struct stack stack;
stack_init(&stack);
,并呼吁偷看:
struct stack_elem * elem = peek(&stack);
该行将引发警告。这里奇怪的是我曾经将stack.c
导入main.c
,并且只用$ gcc main.c
进行编译。这绝对没有错误。现在我将导入更改为stack.h
,并且我正在编写$ gcc main.c stack.c
这会引发警告。运行它也segfaults(它没有预先)。
你可以给所有的源代码吗? – laifjei 2012-07-29 09:05:29
为什么你的声明包含一个声明:'node-> value.character = * p; '? – Aftnix 2012-07-29 09:06:03
@Annix抱歉我修好了。我从emacs拆分屏幕复制它,并且它被错误地复制。 – darksky 2012-07-29 09:09:10