Правильное представление области видимости между Mbed и Platform IO - PullRequest
0 голосов
/ 22 октября 2018

Я работаю над программой прошивки, которая была первоначально написана на 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?

...