我可以在C99中这样做吗?

typedef struct dlNode {
    dlNode* next, prev;
    void* datum;
} dlNode;

const static dlNode head={
    .next = &tail,
    .prev = NULL,
    .datum = NULL
};

const static dlNode tail={
    .next = NULL,
    .prev = &head,
    .datum = NULL
};
没有这个我可以使我的程序正常工作。只是方便。

最佳答案

你可以。您只需要转发声明tail即可使其工作:

typedef struct dlNode {
    struct dlNode* next;
    struct dlNode* prev;
    void* datum;
} dlNode;

const static dlNode tail;

const static dlNode head={
    .next = &tail,
    .prev = NULL,
    .datum = NULL
};

const static dlNode tail={
    .next = NULL,
    .prev = &head,
    .datum = NULL
};

关于c - 我可以使用常量结构进行循环引用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46289498/

10-12 07:04