Я программист на C ++, и мне редко приходится иметь дело с GCC "C".В настоящее время я конвертирую некоторый код из C ++ в C для использования с компилятором GCC.
В C ++ я использовал бы следующий исходный код.Обратите внимание, что я бы использовал класс для области видимости.
C ++ Source
class Card {
public:
enum Suit {
Diamonds, Hearts, Clubs, Spades
};
};
class Weapon {
public:
enum WeaponType {
Rocks, Clubs, Guns
};
};
int main () {
Suit a = Card::Clubs;
WeaponType b = Weapon::Clubs
}
В "C" без классов и без возможности различения двух разных ключевых слов "club".Я получаю следующее сообщение об ошибке при попытке скомпилировать
ошибка C2365: «Клубы»: переопределение;предыдущее определение было «перечислитель»
C Источник
enum Suit {
Diamonds, Hearts, Clubs, Spades
};
enum WeaponType {
Rocks, Clubs, Guns
};
int main () {
Suit a = Clubs;
WeaponType b = Clubs
}
Итак, мои вопросы
- Как мне объявить дваразные перечисления в одном и том же файле с одним и тем же ключевым словом?
- Как добавить область видимости в перечисление, чтобы можно было назначать разные переменные разным перечислениям с одинаковым именем перечисления?