Top = 0; } int isFull(Stack s) { -6ren">
gpt4 book ai didi

c - 为什么需要在 stack.c 中包含 stack.h ?

转载 作者:行者123 更新时间:2023-11-30 16:55:56 28 4
gpt4 key购买 nike

基于数组的实现级别

#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 包含函数原型(prototype)以及堆栈元素类型 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);

所以我的问题是为什么我必须在“stack.c”文件中包含头文件“stack.h”??

最佳答案

您应该必须添加 stack.h,因为该文件包含您的 typedef define struct 的所有声明方法

因此,如果没有那时,将无法访问任何这些信息。

同样的,如果你在main函数下面声明了一个方法,而没有在main楼上声明他的签名,你就无法访问..

因此,所有这一切都发生在您在文件顶部使用的所有包含文件中。

不要忘记C是一种顺序语言,因此如果不告诉编译器,您将永远不知道下一行有什么。

check more here

关于c - 为什么需要在 stack.c 中包含 stack.h ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40122193/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com