Arduino — enum was not declared in this scope

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

#include ... enum TDeviceState { On, Off }; void Init(TDeviceState deviceState){...}
Code language: PHP (php)

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

‘TDeviceState’ was not declared in this scope

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

#include ... void Init(TDeviceState deviceState); //TDeviceState объявлен ниже enum TDeviceState { On, Off }; void Init(TDeviceState deviceState){...}
Code language: PHP (php)

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

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

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