Я работаю над программой прошивки, которая была первоначально написана на 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 я получаю:
'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?
Задача ещё не решена.
Других решений пока нет …