Страницы

Поиск по вопросам

понедельник, 9 декабря 2019 г.

В разных enum нельзя применять одинаковые имена

#cpp


Есть два enum: enum OBJECT_PULSES и enum OBJECT_SENSOR_MODE_RD имена в перечислениях
одинаковые RD_CH..., но их числовые значения разные. При компиляции ошибка: redeclaration.
Это особенность языка или что не так с настройками компилятора, как это побороть кроме
как переименования?

enum OBJECT_PULSES
{
    RD_CH1  = 14, // Счетчик импульсов, канал 1
    // ...
    RD_CH32 = 45 // Счетчик импульсов, канал 32
};

enum OBJECT_SENSOR_MODE_RD
{
    RD_CH1  = 46, //  RD. Режим датчика, канал 1
    // ...
    RD_CH32 = 77, //  RD. Режим датчика, канал 32
};

    


Ответы

Ответ 1



Константы enum'ов не имеют собственной области видимости, поэтому у приведённых двух енумов всё оказывается в одной области видимости. Естественно, в одной области видимости одинаковые имена недопустимы. Как вариант, можно использовать enum class, которые создают свой скоуп. Либо использовать более старую идею с обёртыванием enum'а в пространство имён.

Комментариев нет:

Отправить комментарий