0

我一直在寻找其他开发平台来开发基于 Atmel (Arduino/ATTiny) 和 Espressif (ESP8266) 的设备。最近,我安装了 PlatformIO。但我在似乎承认全球范围方面遇到了麻烦。没有把握...

我有一个头文件,其中包含配置结构的 typedef:

typedef struct {
        char idPrefix[8];
        char defPass[16];
        char targetSSID[32];
        char targetPass[64];
        uint8_t beepInRange;
        uint8_t beepOutofRange;
} devConfig;

我想在我的 ino 文件中分配一个配置变量:

devConfig myConfig;

但是当我尝试在我的设置或循环中访问它时,例如:

void setup() {
  strncpy(myConfig.defPass, "somepass", 16);
}

当我尝试平台运行时,它吐出“错误:'myConfig'未在此范围内声明”

这个东西不支持像arduino一样的全局变量吗?我究竟做错了什么?任何帮助表示赞赏。

4

1 回答 1

1

我想你一定忘记#include "Arduino.h"在主代码中添加头文件了。另外,请注意 Platform IO 编译的是 cpp 文件而不是 ino 文件。

主文件

// Without Arduino.h this code will not compile
#include "Arduino.h"
#include "demo.h"

devConfig myConfig;

void setup() {
  strncpy(myConfig.defPass, "somepass", 16);
}

void loop() {

}

演示.h

typedef struct {
        char idPrefix[8];
        char defPass[16];
        char targetSSID[32];
        char targetPass[64];
        uint8_t beepInRange;
        uint8_t beepOutofRange;
} devConfig;
于 2017-05-17T03:27:55.230 回答