尝试在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
我对此错误感到困惑。我的代码有问题,还是有更严重的问题?
答案 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