C#
est l'une des pires choses à jamais arriver à C
.
Votre question n'a rien à voir avec Objective-C, c'est une question simple.
typedef enum GameTypes{
Classic = 0,
Unlimited,
Timed,
Expert,
} GameType;
Ce code fait plusieurs choses (dont je ne vais décrire que les plus simples). Tout d'abord, il déclare un type d'énumération, qui peut être utilisé comme enum GameTypes
. Par exemple:
enum GameTypes gameType = Classic;
En second lieu, il met ces 4 noms dans l'espace de noms global, tel que Classic
, Unlimited
, Timed
et Expert
peut être utilisé, et ne doit pas être reproduit sous forme de symboles. Troisièmement, il crée un alias de type appelé GameType
qui peut être utilisé comme alias pour enum GameTypes
. Par conséquent, pour votre exemple spécifique, vous ne devez pas différencier enum GameTypes
et GameType
. Au lieu de cela, vous devriez probablement faire quelque chose comme ceci:
typedef enum GameType {
GameTypeClassic = 0,
GameTypeUnlimited,
GameTypeTimed,
GameTypeExpert,
} GameType;
typedef enum GameDifficulty
{
GameDifficultyEasy = 0,
GameDifficultyMedium,
GameDifficultyHard,
} GameDifficulty;
puis ...
GameType gameType = GameTypeClassic;
GameDifficulty gameDifficulty = GameDifficultyEasy;
En outre, vous ne devez pas attribuer le premier élément comme 0
parce que le premier élément d'une énumération sera toujours obtenir 0
sauf si elle est explicitement substituée.