PlatformIO的范围问题(?)

时间:2017-05-16 14:34:10

标签: c++ arduino esp8266 arduino-esp8266 platformio

我一直在寻找其他开发平台,用于处理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那样支持全局变量吗?我究竟做错了什么?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我认为您必须忘记在主代码中添加#include "Arduino.h"头文件。另请注意,Platform IO编译的cpp文件不是ino文件。

<强>的main.cpp

// 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() {

}

<强> demo.h

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