struct在C中产生错误

时间:2014-11-14 05:21:14

标签: c struct

尝试在C中创建结构时,我遇到了奇怪的编译错误。

这是我的代码:

#define ALIGNMENT 8

/* rounds up to the nearest multiple of ALIGNMENT */
#define ALIGN(size) (((size) + (ALIGNMENT-1)) & ~0x7)

#define SIZE_T_SIZE (ALIGN(sizeof(size_t)))

#define BLK_HDR_SIZE ALIGN(sizeof(blockHdr))


typdef struct header {
    size_t size;
    blockHdr *next_p;
    blockHdr *prior_p;
} blockHdr;

这是错误消息:

 mm.c:49:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘struct’
 typdef struct header {
        ^
make: *** [mm.o] Error 1

我对此错误感到困惑。我的代码有问题,还是有更严重的问题?

2 个答案:

答案 0 :(得分:3)

typdef中有拼写错误。接下来,您将收到有关blockHdr未定义的错误。

正确的定义是:

typedef struct header {
    size_t size;
    struct header *next_p;
    struct header *prior_p;
} blockHdr;

在声明之前,您无法使用typedef。您必须使用实际的结构名称。

答案 1 :(得分:1)

我认为那不是

typedef struct header

应该是

typedef struct header