Я работаю над программой прошивки, которая была первоначально написана на mbed, и некоторые инженеры сделали некоторые изменения.Я сталкиваюсь с некоторыми проблемами при переносе этого кода на платформу ввода-вывода.
Платформа имеет очень короткий файл main.cpp, который служит только для вызова Platform.h, который содержит код для конечного автомата устройства:
main.cpp
#include <Platform.h>
int main() {
Platform_Mode = INIT;
while(1) {
Platform_Run();
while(1) {
}
}
}
Platform.h
//platform code for Ticker 2
#ifndef PLATFORM_H
#define PLATFORM_H
#include "mbed.h"
#include "PS2Keyboard.h"
#include "TextLCD.h"
#include "epd4in2.h"
#include "epdpaint.h"
#include "Editor.h"
#define COLORED 0
#define UNCOLORED 1
typedef enum
{
INIT, /*!< Start/Begin/Init */
EDITOR, /*!< Run */
DEBUG
} Platform_Mode_t;
extern Platform_Mode_t Platform_Mode;
bool Platform_Run();
bool Platform_Init(void);
bool Platform_Editor(void);
void Platform_LED_Display(float R, float G, float B);
#endif
Platform.cpp содержит (избавляет вас от всего файла)
Platform_Mode_t Platform_Mode;
Все это прекрасно компилируется в онлайн-компиляторе Mbed.Однако в моей среде Platform IO я получаю:
'Platform_Mode' was not declared in this scope
'INIT' was not declared in this scope
'Platform_Run' was not declared in this scope
и т. Д. Для каждого вызова функции платформы.
У меня нет опыта работы с компилятором, и я заблудился из-за того, почему это может отличаться на разных платформах.Он кажется слишком базовым, чтобы быть ошибкой со стороны Платформенного ввода-вывода, и мой процесс запуска показывает, что зависимость от библиотеки расположена правильно.Компилятор Mbed компенсирует что-то связанное с областью действия, чего нет у Platform IO?