Arduino — enum was not declared in this scope

Есть некое перечисление состояний TDeviceState, к примеру:

#include ...
enum TDeviceState { On, Off };
void Init(TDeviceState deviceState){...}

При попытке использования данного перечисления в аргументе функции — получил сообщение об ошибке:

‘TDeviceState’ was not declared in this scope

В момент сборки описание функций добавляются в начало программы и объявление перечисления оказывается ниже чем объявление функции. В результате получается что то такое:

#include ...
void Init(TDeviceState deviceState); //TDeviceState объявлен ниже

enum TDeviceState { On, Off };

void Init(TDeviceState deviceState){...}

Эту проблему можно решить несколькими способами:

  • Явно объявление функцию перед ее реализацией
#include ...
enum TDeviceState { On, Off };

void Init(TDeviceState deviceState); // Явное объявление функции
void Init(TDeviceState deviceState){...}
  • Вынести описание перечисления в отдельный заголовочный файл (например: Enums.h), и потом подключить этот файл с помощью ключевого слова #include.
#include "Enums.h"
enum TDeviceState { On, Off };
void Init(TDeviceState deviceState){...}

Добавить комментарий