Есть некое перечисление состояний 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)