Проблемы с областью действия (?) С 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? Что я делаю неправильно? Любая помощь приветствуется.

0

Решение

Я думаю, что вы, должно быть, забыли добавить #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;
1

Другие решения

Других решений пока нет …