Arduino IDE不允许在函数外部使用struct变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino IDE不允许在函数外部使用struct变量相关的知识,希望对你有一定的参考价值。

我正在尝试创建struct类型的变量,这些变量在主循环和Arduino脚本中的所有其他函数中可用。

我做了一个简单的结构:

struct IDENTITY
{
    int identifier;
    bool is_alive;
}

该结构位于主要的ino文件中;在函数loopsetup以及我可能使用的所有其他函数之前在顶部声明。

我确实尝试了一个简单的初始化函数,因为当我试图在脚本的顶部实例化一个结构IDENTITY(通常你放置全局变量,但在结构声明之后),我会得到一个未定义类型的错误。

void initialize()
{
    struct IDENTITY testguy;

    testguy.identifier = 1;
    testguy.is_alive = true;
}

这个函数在struct定义之下,当我编译时,它不会给我错误。我从initialize()打电话给setup(),它运作正常。

现在我想用testguy;虽然因为它处于不同的函数中,但它被创建为局部变量,其范围仅限于创建的函数,因此我无法从loop或任何其他函数访问这些变量。

虽然我不能在函数之外的任何地方创建IDENTITY类型的变量;所以我不确定如何处理这个问题。在使用C ++的Visual Studio中,我没有创建结构实例的问题,所以我认为它是C和Arduino IDE的问题?

答案
struct IDENTITY {
  int identifier;
  bool is_alive;
};

IDENTITY testguy = { 256, true };

void setup() {
  testguy.identifier=6;
  testguy.is_alive=false;
}

void loop() {
}

对我有用......

以上是关于Arduino IDE不允许在函数外部使用struct变量的主要内容,如果未能解决你的问题,请参考以下文章

arduino ide 环境esp8266 01s板bitset如何使用

关于Arduino Due开发板在Arduino IDE串口打印问题解决(附Serial函数整理)

arduino IDE 主函数入口在哪?

Arduino独立

Arduino系列之中断函数

进阶之路(基础篇) - 020 放弃Arduino IDE,拥抱Sublime Text 3