c语言 - 头文件帮助和结构



我有一个头文件,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"));
        d->height = atoi(strtok(NULL, " n"));
    }
    return d;
}

但是当我运行它时,我得到像Dimensions undeclared这样的错误。所以我玩了代码改变DimensionsDIM(仍然没有真正理解这两个名称'方案'。

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

然后我得到d->widthd->height的错误,说它对不完整类型的指针解引用,所以我用.交换了->,然后request for member width/height in something not a structure or union的错误。

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

谢谢!

第一部分:Dimensions undeclared

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

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

如果你在某个地方使用struct Dimensions,那么在任何地方都使用它。将sizeof更改为

sizeof(struct Dimensions)

Dimensions undeclared应该消失

第二部分: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));

相关内容

  • 没有找到相关文章

最新更新