基于数组的实现级别
#include "stack.h"
void creat_stack(Stack *s) {
s->Top = 0;
}
int isFull(Stack s) {
return (s.Top == Max ? 1 : 0);
}
int isEmpty(Stack s) {
return (s.Top == Max ? 1 : 0);
}
void push(stack_entry e, Stack *s) {
if (!isFull(*s))
s->entry[s->Top++] = e;
else
printf("Error : Stack Overflow\n");
}
void pop(stack_entry *e,Stack *s) {
if(!isEmpty(*s))
*e = s->entry[s->Top--];
else
printf("Error : Stack Underflow\n");
}
头文件stack.h,它包含函数的原型以及堆栈元素类型stack_entry的定义。
#pragma once
#include <stdio.h>
#define Max 10
typedef char stack_entry;
typedef struct Stack{
int Top;
stack_entry entry[Max];
}Stack;
void creat_stack(Stack *s);
int isFull(Stack s);
int isEmpty(Stack s);
void push(stack_entry e,Stack *s);
void pop(stack_entry *e, Stack *s);
所以我的问题为什么我必须包含头文件&#34; stack.h&#34;在&#34; stack.c&#34;文件??
答案 0 :(得分:0)
首先,不要包括&#34; stdio.h&#34;在头文件中,无论如何你都不会在那里使用它。将它包含在您使用它的源文件中。 您需要包含&#34; struct stack&#34;的头文件。和#34;定义&#34;。
答案 1 :(得分:0)
您必须添加stack.h
,因为此文件包含typedef
define
struct
和methods
所以没有那个,将无法访问任何这些信息。
如果你在main函数下面声明一个方法并且不在楼上声明他的签名,那么你就无法访问..
所以,所有这些都发生在您在文件顶部使用的所有包含文件中。
不要忘记C
是一种顺序语言,所以如果你不告诉编译器,你永远不会知道下一行有什么。