C中的链接列表节点,struct prototype

Alf*_*ong 4 c struct linked-list

我正在研究嵌入式系统,我需要实现一个链表.

所以我用一个结构来构造一个节点

typedef struct A
{
   ... //some data
   struct A *next;
   struct A *prev;
} A;
Run Code Online (Sandbox Code Playgroud)

我认为在PC(gcc)上这很好用.但是,嵌入式系统编译器抱怨"标识符A未声明"...

什么是最好的解决方案?

das*_*ght 10

您应该添加结构的单独前向声明:

struct A;
typedef struct A
{
    ... //some data
    struct A *next;
    struct A *prev;
} A;
Run Code Online (Sandbox Code Playgroud)

有些编译器会按照您发布的方式对您的定义进行定义,但我看到较旧的编译器需要单独的前向声明.这可能与较旧的标准或不完整的标准实施有关.实际上,在我们需要编写在具有不同编译器的五个平台上运行的代码的项目中,我们将其作为公司范围的编码标准要求,以使前向声明与struct的typedef分开.