如何在Arduino中进行结构的声明?

时间:2016-10-03 00:22:13

标签: c++ arduino

想象一下这个非常人为的例子:(注意这是针对Arduino风格的C,而不是ANSI C):

typedef struct _node {
  int value;
  struct _node *next;
} node;

使用这个,我可以通过构建列表来构建两个节点的链接列表"向后":

node nodeB = { 2, (node *)0 };  // end of list
node nodeA = { 1, &nodeB };     // A.next => B

但相反,如果我想制作循环链接列表怎么办?这不会起作用:

node nodeA = { 1, &nodeB };
node nodeB = { 2, &nodeA };

因为在nodeA想要引用它时没有声明nodeB。

我可以在运行时构建链表(动态分配节点,然后设置next链接)。但有没有办法在编译时获得有效的前向声明?

1 个答案:

答案 0 :(得分:2)

这看起来像一个相当普通的情况,前方声明将起作用:

extern node nodeB;
node nodeA = { 1, &nodeB };
node nodeB = { 2, &nodeA };