首页 > 解决方案 > 在 C 编程中将 .h 文件实现到 main() 中

问题描述

我是 C 编程的新手,我正在尝试使用我在 main() 中创建的 .h 的实现。到目前为止,我有一个 .h 文件,一个实现 .h 文件的 .c 文件,并且我正在处理另一个具有主要功能的 .c 文件。我已经运行了 .h 和 .c 实现文件,它工作正常。我相信我搞砸的部分是使用主文件中的实现。我得到的错误是分段错误核心转储。到目前为止,这就是我想要做的

//.h file
typedef struct stack{
    int* data;
    int size;
    int capacity;
} STACK;

STACK* MakeStack(int initialCapacity);
//Other Push,Pop,Grow Functions

我的第二个文件(prog1_2.c)是这个头文件的实现,它执行它假设的操作,例如我的 MakeStack 方法是:

//prog1_2.c
STACK* MakeStack(int initialCapacity){
    struct stack *newStack = (struct stack*) malloc( sizeof(struct stack));
    newStack->size = 0;
    newStack->capacity = initialCapacity;
    newStack->data = (int*)malloc(sizeof(int)*initialCapacity);
    return newStack;
}

最后,我遇到问题的部分是这个 prog1_3.c 主文件。我几乎可以肯定我搞砸的原因是因为我以错误的方式使用了 Stack 结构。我认为我搞砸的具体路线是

//prog1_3.c
STACK *myStack;

然后我继续使用 myStack 作为 push 和 pop 参数中的变量,例如 Pop(myStack) 或 Push(myStack,value)。这些确切的行产生了一个分段错误核心转储。任何关于指导我解决我做错的事情的意见将不胜感激。谢谢你。

标签: cstack

解决方案


STACK *myStack;

-->

STACK *myStack = MakeStack(42);

推荐阅读