реклама на сайте
подробности

 
 
> Подскажите по поводу enum, Как создать несколько enum с одинаковыми названиями
mempfis_
сообщение Dec 9 2009, 08:58
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Добрый день.

Для хранения констант использую enum.

Код
enum {
const0 = 10,
const1 = 1,
};


Появилась необходимость создать два набора констант но с одинаковыми названиями.
Подумал что спасёт такое:

Код
enum enum0 {
const0 = 10,
const1 = 1,
};

enum enum1{
const0 = 10,
const1 = 1,
};


Но компилятор (IAR) ругается говоря что const0 const1 из enum1 уже были объявлены ранее в enum0.

Собственно вопрос как можно объявить два enum так чтобы названия констант в них совпадали?
Буду благодарен за любую помощь в этом вопросе.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
zltigo
сообщение Dec 9 2009, 09:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(mempfis_ @ Dec 9 2009, 11:58) *
Появилась необходимость создать два набора констант но с одинаковыми названиями.

Долго думали, прежде, чем додумались до такой "необходимости"?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Dec 9 2009, 09:05
Сообщение #3


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(mempfis_ @ Dec 9 2009, 11:58) *
Появилась необходимость создать два набора констант но с одинаковыми названиями.

А как вы различать то их в коде будете? smile.gif
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Dec 9 2009, 09:09
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Цитата(mempfis_ @ Dec 9 2009, 12:58) *
Собственно вопрос как можно объявить два enum так чтобы названия констант в них совпадали?
Буду благодарен за любую помощь в этом вопросе.


Если на С++, то можно так.

Код
namespace ENUM1
{
  enum
  {
    E_AAA = 1;
  }
}

namespace ENUM2
{
  enum
  {
    E_AAA = 1;
  }
}


* * *
= ENUM1::E_AAA
* * *
= ENUM2::E_AAA
* * *



А зачем оно вам надо?
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Dec 9 2009, 09:21
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Код
Долго думали, прежде, чем додумались до такой "необходимости"?


Код
А как вы различать то их в коде будете? :)


Т.е. не получится в enum создать две константы с одинаковыми именами?
В принципе невозможнось сделать это - тоже ответ на мой вопрос.
Буду копать в сторону структур или придётся добавлять к именам констант нолики и еденички. smile.gif

Dima_G огромное спасибо!!!!

По поводу вопросов "долго думали..." или "зачем ето надо...." - в двух словах это значительно упростит понимание присвоения значения параметрам и их считывание для использования в моём проекте.
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 9 2009, 14:09
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(mempfis_ @ Dec 9 2009, 11:21) *
По поводу вопросов "долго думали..." или "зачем ето надо...." - в двух словах это значительно упростит понимание присвоения значения параметрам и их считывание для использования в моём проекте.

Примерно так:

#define TRUE FALSE /* в двух словах это значительно упрощает понимание присвоения значения параметрам и их считывание для использования в моём проекте. */
Go to the top of the page
 
+Quote Post
bbill
сообщение Dec 12 2009, 11:32
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 76
Регистрация: 21-10-05
Пользователь №: 9 941



"Имена в различных перечислениях должны быть различными. Значения констант в одном перечислении не обязаны быть различными."

K&R.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 22:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01405 секунд с 7
ELECTRONIX ©2004-2016