gpt4 book ai didi

c - 头文件帮助和结构

转载 作者:行者123 更新时间:2023-11-30 15:49:50 26 4
gpt4 key购买 nike

我有一个头文件,dimensions.h,其中:

#ifndef DIM_H
#define DIM_H

typedef struct Dimensions
{
int width;
int height;
} DIM;

DIM * GetHeader (FILE * fp);

#endif

从这里我有一个 c 文件,其中包含以下内容:

#include "dimensions.h"
.
.
.
DIM * GetHeader (FILE * fp)
{
char s[1024];
struct Dimensions * d = (struct Dimensions *)malloc(sizeof(Dimensions));

if (fgets(s, sizeof(s), fp) != NULL)
{
printf("%s", s);
d->width = atoi(strtok(s, " \n\0"));
d->height = atoi(strtok(NULL, " \n\0"));
}

return d;
}

但是当我运行它时,我收到诸如 Dimensions undeclared 之类的错误。因此,我尝试将 Dimensions 更改为 DIM 的代码(仍然没有真正理解这两个名称“scheme”。

struct DIM * d = (struct DIM *)malloc(sizeof(DIM));

然后我收到 d->widthd->height 的错误,说它取消引用指向不完整类型的指针,所以我交换了 ->.,然后出现错误请求非结构或 union 中的成员宽度/高度

所以不太确定发生了什么,可能是我错过的非常简单的事情,所以如果有人可以提供帮助那就太棒了。

谢谢!

最佳答案

第 1 部分:未声明尺寸

在您的原始代码中看到这一行吗?

struct Dimensions * d = (struct Dimensions *)malloc(sizeof(Dimensions));

如果您在某处使用struct Dimensions,请在任何地方使用它。将 sizeof 更改为

sizeof(struct Dimensions)

并且未声明的维度应该消失。

第 2 部分:DIM 版本

您的代码:

struct DIM * d = (struct DIM *)malloc(sizeof(DIM));

当您typedef struct {...} DIM时,您只需将其引用为DIM - 而不是struct DIM

DIM * d = (DIM *)malloc(sizeof(DIM));

第 3 部分:将 -> 交换。

当左侧是指向结构的指针时,使用 ->;当左侧只是一个结构时,使用 .

tl;博士

struct Dimensions * d = (struct Dimensions *)malloc(sizeof(struct Dimensions));

应该修复你的代码。

关于c - 头文件帮助和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16073553/

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