beacon.h 应如下所示:
/* filename: .\Arduino\libraries\beacon\beacon.h */
typedef enum State{ // <-- the use of typedef is optional
menu,
output_on,
val_edit
};
和
/* filename: .\Arduino\beacon\beacon.ino */
#include <beacon.h>
State state; // <-- the actual instance
void setup()
{
state = menu;
}
void loop()
{
state = val_edit;
}
当您在主 INO 文件中实例化它时,将 typdef 和“状态”的尾随实例关闭,反之亦然。上面的 beacon.h 文件需要在 users 目录 .\Arduino\libraries\beacon\ 目录下,并且需要重新启动 IDE 以缓存其位置。
但是你可以在 INO 中定义它并一次性实例化它
/* filename: .\Arduino\beacon\beacon.ino */
enum State{
menu,
output_on,
val_edit
} state; // <-- the actual instance, so can't be a typedef
void setup()
{
state = menu;
}
void loop()
{
state = val_edit;
}
两者都编译得很好。
您还可以使用以下内容:
/* filename: .\Arduino\beacon\beacon2.ino */
typedef enum State{ // <-- the use of typedef is optional.
menu,
output_on,
val_edit
};
State state; // <-- the actual instance
void setup()
{
state = menu;
}
void loop()
{
state = val_edit;
}
这里实例与枚举是分开的,允许枚举只是一个 typedef。上面是一个实例而不是 typedef。