c代码中的Eror:预期标识符或‘;(’;之前‘;自由节点’;

c代码中的Eror:预期标识符或‘;(’;之前‘;自由节点’;,c,list,struct,operating-system,C,List,Struct,Operating System,.h文件,其标题用于在c中创建列表: #ifndef SO605_GC #define SO605_GC #include <stddef.h> #define MEMSIZE 4096*1024*1024 typedef struct free_node { size_t size; struct free_node *next; } free_node_t; typedef *free_node_t mem_free_t

.h
文件,其标题用于在
c
中创建列表:

 #ifndef SO605_GC
 #define SO605_GC
 #include <stddef.h>

 #define MEMSIZE 4096*1024*1024          

 typedef struct free_node {
     size_t size;
     struct free_node *next;
 } free_node_t;

 typedef *free_node_t mem_free_t;

 void *aloca(size_t size);
 void libera(void *ptr);

 #endif
#ifndef SO605_GC
#定义SO605_GC
#包括
#定义MEMSIZE 4096*1024*1024
typedef结构自由_节点{
大小;
结构自由_节点*下一步;
}自由节点;
typedef*free_node_t mem_free_t;
void*aloca(大小);
无效自由(无效*ptr);
#恩迪夫
编译时会出现以下错误:

aloca.h:14:10:错误:应为“free\u node\t”之前的标识符或“(” typedef*free_node_t mem_free_t


如何解决此问题?

您在中遇到语法错误

typedef *free_node_t mem_free_t;
应该是哪一个

typedef free_node_t *mem_free_t;
但是请不要使用
typedef
指针。我还认为后缀
\u t
通常是保留的


还要注意的是,
4096*1024*1024
将不适合32位变量,不管它是什么用途,并且可能不会像您认为的那样进行乘法。

中存在语法错误

typedef *free_node_t mem_free_t;
应该是哪一个

typedef free_node_t *mem_free_t;
但是请不要使用
typedef
指针。我还认为后缀
\u t
通常是保留的

还要注意的是,
4096*1024*1024
不适合32位变量,不管它是什么,并且可能不会像您认为的那样进行乘法。

\define MEMSIZE(4096ull*1024*1024)
\define MEMSIZE(4096ull*1024*1024)